10
votes

Comment convertir la sortie de commande en une ligne de tableau par ligne à bash?

J'essaie de convertir la sortie d'une commande comme echo -e "ab \ n \ nd e" code> à un tableau.

for i in ${X[@]} ; do echo $i ; done
a b
c
d e


2 commentaires

Dupliqué possible de Comment créer un Array in Bash à partir d'une variable de commande?


Quelqu'un pourrait être capable de trouver un meilleur duplicata; C'est juste le plus récent. Cette question a probablement été posée des dizaines de fois.


3 Réponses :


16
votes

Vous devez modifier votre séparateur de champ interne variable ( ifsc ) à une nouvelle ligne d'abord.


2 commentaires

Merci pour les explications. Je me demande pourquoi vous utilisez echo -e et pas seulement echo . N'importe quelle raison?


Le drapeau -E indique à Echo d'interpréter des caractères d'évacuation des goudrons tels que \ n pour sortir une nouvelle ligne vs un littéral \ n



0
votes

Définir le ifs code> sur nouvelle ligne code>. Par défaut, il est espace code>.

[jaypal:~] while IFS=$'\n' read -a arry; do 
echo ${arry[0]}; 
done < <(echo -e "a b\nc\nd e")
a b
c
d e


1 commentaires

Non, par défaut, il est $ '\ t \ n' , des espaces onglets et de nouvelles lignes neuves.



1
votes
readarray -t "[array]" <<< "$([command])"

0 commentaires