Lecture d’une chaîne délimitée dans un tableau dans Bash

J’ai une variable qui contient une chaîne délimitée par des espaces:

line="1 1.50 ssortingng" 

Je veux diviser cette chaîne avec un espace en tant que délimiteur et stocker le résultat dans un tableau, de sorte que:

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

les sorties

 1 1.50 ssortingng 

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

 arr=$(echo ${line}) 

Si je lance les instructions d’écho ci-dessus, j’obtiens:

 1 1.50 ssortingng [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?

Pour convertir une chaîne en tableau, veuillez utiliser

 arr=($line) 

ou

 read -a arr < << $line 

Il est crucial de ne pas utiliser de guillemets car cela fait l'affaire.

Essaye ça:

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

In: arr=( $line ) . Le “split” est associé à “glob”.
Les caractères génériques ( * ? Et [] ) seront étendus aux noms de fichiers correspondants.

La solution correcte est légèrement plus complexe:

 IFS=' ' read -a arr < << "$line" 

Pas de problème de globulation; le caractère fractionné est défini dans $IFS , les variables sont indiquées.

 line="1 1.50 ssortingng" arr=$( $line | tr " " "\n") for x in $arr do echo "> [$x]" done