Comment imprimer l'élément de tableau d'un tableau Bash sur des lignes distinctes? Celui-ci fonctionne, mais il y a sûrement une meilleure façon:
$ my_array=(one two three)
$ for i in ${my_array[@]}; do echo $i; done
one
two
three
J'ai essayé celui-ci mais cela n'a pas fonctionné:
$ IFS=$'\n' echo ${my_array[*]}
one two three
| grep -v '^$'
?Citez simplement l'argument pour faire écho:
le sous-shell aide à restaurer l'IFS après utilisation
la source
IFS=$'\n' echo "${my_array[*]}"
cela ne fonctionne donc pas. Tant pis!echo
est intégré à Bash. Cependant, vous pouvez l'envelopper dans une fonction et cela fonctionnera! gist.github.com/steshaw/53ba0095bce8ccab52d26a14375dedb8Utilisation pour :
Utiliser l' histoire ; notez que cela échouera si vos valeurs contiennent
!
:Utilisation du nom de base ; notez que cela échouera si vos valeurs contiennent
/
:Utilisation de shuf ; notez que les résultats peuvent ne pas sortir dans l'ordre:
la source
J'ai essayé les réponses ici dans un géant pour ... si boucle, mais je n'ai pas eu de joie - alors je l'ai fait comme ça, peut-être malpropre mais j'ai fait le travail:
même si cela a ajouté un espace à la liste, ce qui est bien - je le voulais un peu en retrait. Supposons également que le "\ n" puisse être imprimé dans l'original $ EP_LIST.
la source
Une autre variante utile est de diriger vers
tr
:echo "${my_array[@]}" | tr ' ' '\n'
Cela semble simple et compact
la source
my_array=( "one two" three )
4
+, a dû utiliserecho "${my_array[@]}" | tr '' ' \n'
, bien que personnellement j'éviterais d'utiliserecho
comme ça, oùtr
mon choix, je pense que quelque chose commetr '' ' \n' <<<"${my_array[@]}"
pourrait être un peu plus facile à lire plus tard.