tutorial script comandos bourne again bash unix

bash - script - bourne again shell



¿Qué es un buen equivalente a las listas de Perl en bash? (4)

Ahora que la respuesta que me gusta ha sido aceptada como la respuesta correcta, pasaré a otro tema: cómo utilizar IFS para obtener beneficios personales. :-PAG

fruits="apple,orange,kiwifruit,dried mango" (IFS=, for fruit in $fruits; do echo "$fruit" done)

Puse el código entre paréntesis para que el cambio de IFS aislado en su propio subproceso; por lo tanto, al final de la sección entre corchetes, IFS se revierte a su valor anterior. :-)

En Perl uno simplemente haría lo siguiente para almacenar e iterar sobre una lista de nombres

my @fruit = (apple, orange, kiwi); foreach (@fruit) { print $_; }

¿Cuál sería el equivalente en bash?


bash (a diferencia de POSIX sh) admite matrices:

fruits=(apple orange kiwi "dried mango") for fruit in "${fruits[@]}"; do echo "${fruit}" done

Esto tiene la ventaja de que los elementos de la matriz pueden contener espacios u otros miembros de $ IFS; siempre que se inserten correctamente como elementos separados, se leen de la misma manera.


for i in apple orange kiwi do echo $i done


Me gusta esto:

FRUITS="apple orange kiwi" for FRUIT in $FRUITS; do echo $FRUIT done

Tenga en cuenta que esto no funcionará si hay espacios en los nombres de sus frutas. En ese caso, vea esta respuesta , que es ligeramente menos portátil pero mucho más robusta.