Tecnología

Inicio

Cómo leer una línea separadas del Tubo en una matriz de Bash

Utilización de scripts Bash, puede automatizar muchas tareas que involucran trabajar con los archivos, programas y el intercambio de datos sin tener que recurrir a un lenguaje de programación completo. Una de sus características es la matriz, que se utiliza para manipular conjuntos de datos. Puede utilizar la variable Separador de campo de entrada para leer una línea separada tubería en una matriz de Bash.

Instrucciones

1 Introduzca el código siguiente en una nueva escritura del golpe para guardar la entrada Separador de campo. El IFS es controlado por la variable IFS. El cambio de este valor altera la forma golpe divide las líneas de entrada en argumentos. Debido a que se va a modificar este valor, guardar el valor antiguo.

! / Bin / bash

oldifs = $ IFS

2 Agregue la siguiente línea a su script para cambiar los fondos de inversión al carácter de canalización.

IFS = "|"

3 Tipo de "leer -a myarray" en el archivo de secuencia de comandos para leer su entrada en una matriz desde la consola. Cuando se ejecuta la secuencia de comandos, se aceptará la entrada de la consola. También puede utilizar la redirección de archivo para leer desde un archivo mediante la adición de "leer -a myarray <entrada.txt" a la secuencia de comandos, donde "entrada.txt" es el nombre de su archivo de entrada. Si ya tiene sus datos en una variable, simplemente puede añadir "myarray = ($ yourvariable)" en su lugar.

4 Agregue la línea siguiente para restaurar el IFS para que futuros comandos se comportan como se esperaba.

IFS = $ oldifs

5 Introduzca el siguiente fragmento en la secuencia de comandos para revisar sus resultados. Se imprimirá un elemento de la matriz por línea.

for i in $ (SEQ 0 $ (($ {# myarray [*]} - 1)))

hacer

echo "${myarray[$i]}"

hecho