Eu tenho um comando retornando várias linhas. Para processamento adicional, eu preciso processar cada linha dessas linhas.
Meu código atual funciona modificando o IFS ( Internal Field Separator ):
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
Gostaria de saber, existe uma maneira melhor de acessar as linhas únicas da saída de várias linhas, uma sem modificar o IFS? Especialmente a legibilidade do meu script fica ruim ao modificar o IFS.
Atualização: Tenho problemas para obter respostas, por exemplo, a da 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 dá
./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 \"""\").
Alguém pode me ajudar com isso? Obrigado!
< <(some command returning multiple lines)
, mas não é isso que você está fazendo.