Comment imprimer les éléments d'un tableau Bash sur des lignes séparées ? Cette méthode fonctionne, mais il y a sûrement une meilleure solution :
$ my_array=(one two three)
$ for i in ${my_array[@]}; do echo $i; done
one
two
three
J'ai essayé celle-ci mais elle n'a pas fonctionné :
$ IFS=$'\n' echo ${my_array[*]}
one two three
Essayez de faire ceci :
$ printf '%s\n' "${my_array[@]}"
La différence entre $@
et $*
:
Non cité, les résultats ne sont pas spécifiés. En Bash, les deux se développent en args séparés et sont ensuite décomposés et globalisés.
Entre guillemets, "$@"
développe chaque élément comme un argument séparé, tandis que "$*"
' développe les arguments fusionnés en un seul.
développe les arguments fusionnés en un seul : "$1c$2c..."
(où c
est le premier caractère du
le premier caractère de IFS
).
Vous voulez presque toujours "$@"
. Il en va de même pour "${arr[@]}"
.
Toujours les citer!
J’ai essayé les réponses ici dans une boucle for...if géante, mais je n’ai pas obtenu de résultat satisfaisant - alors j’ai fait comme ceci, c’est peut-être un peu compliqué mais ça a marché :
# EXP_LIST2 is iterated
# imagine a for loop
EXP_LIST="List item"
EXP_LIST2="$EXP_LIST2 \n $EXP_LIST"
done
echo -e $EXP_LIST2
bien que cela ajoute un espace à la liste, ce qui est bien - je voulais qu'elle soit un peu indentée. Je suppose également que le "\n" ; pourrait être imprimé dans la $EP_LIST originale.