Comando mapfile bash linux

Comando mapfile bash linux
Il comando mapfile bash shell è spesso noto come un array di lettura. Lo scopo principale è leggere le righe di input standard e archiviarle in una variabile di array indicizzata. Mapfile deve anche leggere dalla sostituzione (<<) 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.

Il comando touch viene utilizzato per creare, modificare e modificare i timestamp sui file nel sistema operativo UNIX/Linux. Quindi, come mostrato nell'immagine, abbiamo provato le istruzioni "tocco" all'interno della nostra shell per creare un nuovo file di testo. GNU Nano è un editor di comando incorporato di base per sistemi operativi UNIX/Linux. Digitare "nano" dopo il simbolo $, seguito dal nome del file per aprire o creare un nuovo file.

$ TOUCT NUOVO.TXT
$ nano nuovo.TXT

Esempio 1: leggi dal file come array

Il comando "nano" nella shell apre il "nuovo.file txt "nell'editor" nano ". Abbiamo digitato il testo uno, due e tre nel file di testo in tre righe separate come mostrato. Salva questo semplice file di dati di testo tramite CTRL+S e chiudi l'editor "Nano" tramite il collegamento CTRL+X.

È ora di utilizzare l'istruzione Mapfile per leggere i dati di testo appena aggiunti in un modulo di array. Le righe di testo nel nuovo.Il file TXT viene archiviato come elementi dell'array nella variabile "var" utilizzando il comando mapfile. Nella seconda riga, la query Echo viene utilizzata per stampare tutti i dati su ciascun indice di un array memorizzato nella variabile "var" in un formato di array. Allo stesso modo, le righe successive dei codici di istruzione "eco" vengono utilizzate per visualizzare i dati in un indice specifico, i.e., 0,1,2,3 di un array separatamente. Poiché l'array contiene solo 3 valori, quindi il risultato dell'indice 3 non restituisce nulla.

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

Esempio 2: leggere i dati di output in un array

Possiamo anche utilizzare alcuni dati dell'istruzione di output da un'istruzione bash all'array usando l'istruzione MAPFILE. Abbiamo utilizzato l'istruzione printf per ottenere i suoi dati di output in un array "arr."Tre valori," Ana "," Paul "e" George ", separati dal personaggio speciale di linea" \ n "verrà memorizzato in esso usando l'istruzione MAPFILE. Successivamente, il primo comando Echo viene utilizzato per visualizzare tutti i dati in un array. I dati che si verificano su ciascun indice di un array "ARR" vengono visualizzati in modo simile nelle righe successive del codice tramite l'istruzione "Echo" seguita dai numeri dell'indice tra parentesi quadrate. Poiché non ci sono dati sul terzo indice di un array, non viene visualizzato alcun output sullo schermo. Andiamo verso l'esempio successivo.

$ 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]

Esempio 03: opzione mapfile -n

Il comando Map File ha opzioni integrate per l'esecuzione. IL -n opzione è stato utilizzato per specificare il numero di valori dal file di dati da prendere come input per un array. Tutte le linee devono essere copiate in un array quando il valore di n è zero. La prima riga nell'esempio seguente utilizza il comando Map File con l'opzione -n ​​impostata su 2. Ciò significa che leggerà le prime due righe dal file in un array chiamato "var" come valori dell'indice per un array.

Il comando Echo visualizza i dati su tutti gli indici dell'array "var", i.e., 2 indici, implicando che il comando del file map copia le prime due righe dal file con l'opzione -n. Utilizzando l'opzione "-N" con il valore 1 nell'istruzione Mapfile leggerà solo una singola riga dal file, come mostrato di seguito.

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

Esempio 04: opzione mapfile -t

L'opzione "-t" viene utilizzata per rimuovere/rimuovere le nuove linee da un elemento memorizzandolo in un array. L'esempio seguente mostra l'esecuzione pratica del comando -t. L'operatore di sostituzione (<) 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 [@]"

Gli esempi seguenti mostrano come stampare i singoli elementi di un array usando indici.

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

Nell'esempio seguente, il comando Echo stampica tutti gli elementi del file map variabile dell'array, separati da uno spazio.

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

Possiamo risolverlo e rimuovere le interruzioni della linea utilizzando l'opzione -t di istruzione mapfile.

$ printf “ana \ npaul \ ngeorge \ n” | (mapfile -t; echo “$ mapfile [@]”)

Conclusione

Questo articolo riguardava l'utilizzo dell'istruzione Bash Mapfile su Ubuntu 20.04 Sistema per prendere qualsiasi dati di testo di input da un array all'interno di una variabile e visualizzarli in base a quello. Abbiamo provato l'istruzione Mapfile con opzioni "-n" e "-t" per ottenere un diverso formato di output per gli array sulla shell bash.