Nwlapcug.com


Come leggere un tubo separato di linea in una matrice di Bash

Utilizzando lo scripting Bash, è possibile automatizzare molte attività che comportano l'utilizzo di interscambio di file, programmi e dati senza ricorrere a un linguaggio di programmazione completo. Una delle sue caratteristiche è la matrice, utilizzata per manipolare insiemi di dati. È possibile utilizzare la variabile di separatore di campo di Input per leggere una riga separato dal simbolo pipe in una matrice di Bash.

Istruzioni

1

Immettere il codice seguente in un nuovo script di bash per salvare il separatore di campo di Input. L'IFS è controllata dalla variabile di IFS. Modificando questo valore si altera come bash divide le linee di ingresso in argomenti. Perché avete intenzione di modificare questo valore, è possibile salvare il vecchio valore.

! / bin/bash

oldIFS = $IFS

2

Aggiungere la seguente riga allo script per modificare l'IFS per il carattere pipe.

IFS = "|"

3

Digitare "leggere - un myarray" nel file di script per leggere l'input in una matrice dalla console. Quando si esegue lo script, accetterà input della console. È anche possibile utilizzare Reindirizzamento di file per leggere da un file aggiungendo "leggere - un myarray < input. txt" allo script, dove "input. txt" è il nome del vostro file di input. Se hai già i dati in una variabile, è possibile semplicemente aggiungere "myarray=($yourvariable)".

4

Aggiungere la riga seguente per ripristinare l'IFS in modo che futuri comandi funzionino come previsto.

IFS = $oldifs

5

Stipulare il seguente frammento di script per controllare i risultati. Verrà stampato un elemento della matrice per ogni riga.

per la i in $(seq 0 $((${#myarray [*]} - 1)))

fare

echo "${myarray[$i]}"

fatto