Tengo un comando que devuelve varias líneas. Para un procesamiento adicional, necesito procesar cada línea individual de esas líneas.
Mi código actual funciona modificando el IFS ( separador de campo interno ):
ROWS=$(some command returning multiple lines)
O=$IFS #save original IFS
IFS=$(echo -en "\n\b") # set IFS to linebreak
for ROW in ${ROWS[@]}
do
echo "$ROW"
done
IFS=$O #restore old IFS
Me pregunto, ¿hay una mejor manera de acceder a las líneas individuales de la salida de varias líneas, una sin modificar el IFS? Especialmente la legibilidad de mi script se vuelve mala al modificar el IFS.
Actualización: Tengo problemas para que las respuestas funcionen, por ejemplo, la de choroba:
while IFS= read -r line ; do
let var+=line #line 42
done << $(sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db "${QUERY}")
echo "$var" # line 44
me da
./bla.sh: row 44: Warning: here-document at line 43 delimited by end-of-file (wanted `$(sqlite3 -list -nullvalue NULL -separator , /var/log/asterisk/master.db ${QUERY})')
./bla.sh: row 42: let: echo "": syntax error: invalid arithmetic operator. (error causing character is \"""\").
Alguien me puede ayudar con esto? ¡Gracias!
< <(some command returning multiple lines)
, pero eso no es lo que estás haciendo.