arrays - matrices - Lectura de una cadena delimitada en una matriz en Bash
matrices bash shell (4)
En: arr=( $line )
. La "división" viene asociada con "glob".
Los comodines ( *
?
Y []
) se expandirán a nombres de archivos coincidentes.
La solución correcta es solo un poco más compleja:
IFS='' '' read -a arr <<< "$line"
Sin problemas de globbing; el carácter dividido se establece en $IFS
, variables citadas.
Tengo una variable que contiene una cadena delimitada por espacios:
line="1 1.50 string"
Quiero dividir esa cadena con espacio como delimitador y almacenar el resultado en una matriz, de modo que lo siguiente:
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
salidas
1
1.50
string
En algún lugar encontré una solución que no funciona:
arr=$(echo ${line})
Si ejecuto las declaraciones de eco anteriores después de esto, obtengo:
1 1.50 string
[empty line]
[empty line]
También intenté
IFS=" "
arr=$(echo ${line})
con el mismo resultado ¿Puede alguien ayudar, por favor?
Prueba esto:
arr=(`echo ${line}`);
arr=($line)
o
read -a arr <<< $line
line="1 1.50 string"
arr=$( $line | tr " " "/n")
for x in $arr
do
echo "> [$x]"
done