231 votes

En bash, comment convertir une chaîne délimitée par des espaces dans un tableau ?

J'ai une variable qui contient un espace délimité par des cordes,

line="1 1.50 string"

Je veux briser cette chaîne avec un espace comme séparateur et stocker le résultat dans un tableau, de sorte que les suivantes:

echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}

sorties

1
1.50
string

Quelque part, j'ai trouvé une solution qui ne fonctionne pas:

arr=$(echo ${line})

Si je lance l'écho des déclarations ci-dessus après ceci, j'obtiens:

1 1.50 string
[empty line]
[empty line]

J'ai aussi essayé

IFS=" "
arr=$(echo ${line})

avec le même résultat. Quelqu'un peut-il aider, s'il vous plaît?

369voto

kev Points 41855
 arr=($line)
 

ou

 read -a arr <<<$line
 

45voto

Randy Points 41

Essaye ça:

 arr=(`echo ${line}`);
 

-9voto

Hitesh Points 1
line="1 1.50 string"

arr=$( $line | tr " " "\n")

for x in $arr
do
echo "> [$x]"
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X