Ho un comando che restituisce più righe. Per ulteriori elaborazioni ho bisogno di elaborare ogni singola riga di quelle righe.
Il mio codice attuale funziona modificando l'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
Mi chiedo, c'è un modo migliore per accedere alle singole linee dell'uscita su più linee, una senza modificare l'IFS? Soprattutto la leggibilità della mia sceneggiatura peggiora modificando l'IFS.
Aggiornamento: ho problemi a far funzionare le risposte, ad esempio quello di 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
mi 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 \"""\").
Qualcuno può aiutarmi con questo? Grazie!
< <(some command returning multiple lines)
, ma non è quello che stai facendo.