Comment faire pour convertir la sortie d'une commande à un tableau ligne par ligne en bash?
Je suis en train de convertir la sortie d'une commande comme echo -e "a b\nc\nd e"
à un tableau.
X=( $(echo -e "a b\nc\nd e") )
Divise l'entrée pour chaque nouvelle ligne et les espaces de caractère:
$ echo ${#X[@]}
> 5
for i in ${X[@]} ; do echo $i ; done
a
b
c
d
e
Le résultat devrait être:
for i in ${X[@]} ; do echo $i ; done
a b
c
d e
double possible de Comment puis-je créer un tableau dans un bash à partir d'une variable de commande?
Quelqu'un pourrait être en mesure de trouver une meilleure double; c'est juste la plus récente. Cette question a probablement été posée des dizaines de fois.
Quelqu'un pourrait être en mesure de trouver une meilleure double; c'est juste la plus récente. Cette question a probablement été posée des dizaines de fois.
OriginalL'auteur Thomas Jung | 2012-01-07
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de changer votre Interne Séparateur de Champ variable (
IFS
) pour un retour à la ligne en premier.echo -e
et pas seulementecho
. N'importe quelle raison?le
-e
drapeau indique écho à interpréter échappement des caractères tels que\n
à la sortie d'un saut de ligne vs un littéral\n
OriginalL'auteur SiegeX
Définir la
IFS
ànewline
. Par défaut, il estspace
.$' \t\n'
, espaces, tabulations et retours à la ligne.OriginalL'auteur jaypal singh