Befehl mapfile bash linux

Befehl mapfile bash linux
Der Befehl Bash -Shell -Kartfile wird häufig als Lesearray bezeichnet. Der Hauptzweck ist das Lesen von Standardeingangsleitungen und das Speichern in einer indizierten Array -Variablen. MAPFILE muss auch aus Substitution (Substitution () lesen (<<) rather than a pipe. In addition, as compared to a read loop, bash Mapfile is a much faster and more convenient solution. It returns 1 if the execution of the command gets successful and 0 in case it is not successful. If we don't specify an array name, the bash Mapfile variable will be targeting the array variable by default. Thus, we have decided to cover some examples using the mapfile instruction on the bash.

Der Befehl touch wird verwendet, um Zeitstempel in Dateien im UNIX/Linux -Betriebssystem zu erstellen, zu ändern und zu bearbeiten. Wie im Bild gezeigt, haben wir also die Anweisung „Berührung“ in unserer Shell ausprobiert, um eine neue Textdatei zu erstellen. GNU Nano ist ein grundlegender integrierter Befehlszeilen-Editor für UNIX/Linux-Betriebssysteme. Geben Sie "Nano" nach dem $ -Symbol ein, gefolgt vom Namen der Datei zum Öffnen oder Erstellen einer neuen Datei.

$ touch neu.txt
$ nano neu.txt

Beispiel 1: Lesen Sie aus der Datei als Array

Der Befehl "nano" in der Shell öffnet das "neue".TXT ”-Datei im Editor„ Nano “. Wir haben den Text eins, zwei und drei in die Textdatei in drei separaten Zeilen wie gezeigt eingegeben. Speichern Sie diese einfache Textdatendatei über das Strg+S und schließen Sie den Editor „Nano“ über die Strg+X -Verknüpfung.

Es ist Zeit, die MAPFILE -Anweisung zu verwenden, um die gerade hinzugefügten Textdaten in ein Array -Formular zu lesen. Die Textzeilen in der neuen.Die TXT -Datei wird als Array -Elemente in der Variablen „var“ unter Verwendung des Befehl mapFile gespeichert. In der zweiten Zeile wird die Echo -Abfrage verwendet, um alle Daten auf jedem Index eines Arrays zu drucken, das in einem Array -Format in der Variablen „var“ gespeichert ist. In ähnlicher Weise werden die nächsten Zeilen der Anweisungscodes „Echo“ verwendet, um Daten in einem bestimmten Index anzuzeigen, i.e., 0,1,2,3 eines Arrays getrennt. Da das Array nur 3 Werte enthält, gibt das Ergebnis von Index 3 nichts zurück.

$ mapfile var < new.txt
$ echo $ var [@]
$ echo $ var [0]
$ echo $ var [1]
$ echo $ var [2]
$ echo $ var [3]

Beispiel 2: Lesen Sie Ausgabedaten in ein Array

Wir können auch einige Ausgabemodaten aus einer Bash -Anweisung in das Array mit der MAPFILE -Anweisung verwenden. Wir haben die Printf -Anweisung verwendet, um ihre Ausgabedaten in ein Array „arr."Drei Werte" Ana "," Paul "und" George ", getrennt durch Linienbrecher -Spezialcharakter" \ n ", werden unter Verwendung der MAPFILE -Anweisung darin gespeichert. Anschließend wird der erste Echobefehl verwendet, um alle Daten in einem Array anzuzeigen. Die Daten, die in jedem Index eines Array "arr" auftreten. Da auf dem dritten Index eines Arrays keine Daten vorhanden sind, wird auf dem Bildschirm keine Ausgabe angezeigt. Bewegen wir uns zum nächsten Beispiel.

$ mapfile arr < <(printf “Ana \nPaul \n George\n”)
$ echo $ var [@]
$ echo $ var [0]
$ echo $ var [1]
$ echo $ var [2]
$ echo $ var [3]
$ echo $ var [0]

Beispiel 03: MAPFILE -N -Option

Der Befehl kartendatei enthält integrierte Optionen für die Ausführung. Der -n Option wurde verwendet, um die Anzahl der Werte aus der Datendatei als Eingabe für ein Array anzugeben. Alle Zeilen sollten in ein Array kopiert werden, wenn der Wert von n Null ist. Die erste Zeile im folgenden Beispiel verwendet den Befehl kartendatei mit der Option -n -Option auf 2. Dies bedeutet.

Der Befehl echo zeigt Daten zu allen Indizes des Array „var“ an, i.e., 2 Indizes, was impliziert, dass der Befehl kartendatei die ersten beiden Zeilen aus der Datei mit der Option -n kopiert. Wenn Sie die Option "-n" mit Wert 1 in der MAPFILE-Anweisung verwenden, lesen Sie nur eine einzige Zeile aus der Datei, wie unten gezeigt.

$ mapfile -n var < new.txt
$ echo $ var [@]
$ mapfile -n 1 var < new.txt
$ echo $ var [@]

Beispiel 04: MAPFILE -T -Option

Die Option "-t" wird verwendet, um Newlines aus einem Artikel zu streifen/zu entfernen, indem sie in einem Array gespeichert werden. Das folgende Beispiel zeigt die praktische Ausführung des Befehls -t. Der Substitutionsbetreiber (<) is used to populate the data into an array named “Arr.” The Mapfile instruction receives standard input strings, i.e., “Ana,” “Paul,” and “George,” from the printf statement and appends newlines (-t) to each line. When we run the entire command, mapfile silently scans the text lines and places each line into its specific array variable. The use of the printf statement is simply showing us that the string elements have been considered as array elements while “\n” has been used to give the line break in the shell.

$ mapfile -t arr< <(printf “Ana \nPaul \nGeorge\n”)
$ printf "%s \ n" "$ arr [@]"

Die folgenden Beispiele zeigen, wie die einzelnen Elemente eines Arrays mit Indizes gedruckt werden können.

$ printf "%s \ n" "$ arr [0]"
$ printf "%s \ n" "$ arr [1]"
$ printf "%s \ n" "$ arr [2]"
$ printf "%s \ n" "$ arr [3]"

Im folgenden Beispiel druckt der Befehl echo alle Elemente der Array -Variablen -Kartnatfile, die durch einen Raum getrennt sind.

$ printf "ana \ npaul \ ngeorge \ n" | (mapFile; echo "$ mapfile [@]")

Wir können es beheben und die Linienbrennungen entfernen, indem wir die Option -t -Option der MAPFILE -Anweisung verwenden.

$ printf "ana \ npaul \ ngeorge \ n" | (MAPFILE -T; Echo "$ mapFile [@]")

Abschluss

In diesem Artikel ging es um die Nutzung der Bash -Kartellafelanweisung zum Ubuntu 20.04 System, um alle Eingabetxtdaten aus einem Array in einer Variablen zu nehmen und sie danach anzuzeigen. Wir haben die MAPFILE-Anweisung mit "-n "- und" -t "-Optionen ausprobiert, um ein anderes Format von Ausgängen für Arrays an der Bash-Shell zu erhalten.