Ich habe einen Befehl, der mehrere Zeilen zurückgibt. Für die weitere Verarbeitung muss ich jede einzelne Zeile dieser Zeilen verarbeiten.
Mein aktueller Code funktioniert durch Ändern des 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
Ich frage mich, gibt es eine bessere Möglichkeit, auf die einzelnen Zeilen der Ausgabe mehrerer Zeilen zuzugreifen, ohne das IFS zu ändern? Insbesondere die Lesbarkeit meines Skripts wird durch das Ändern des IFS beeinträchtigt.
Update: Ich habe Probleme, die Antworten zum Laufen zu bringen, z. B. die von 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
gibt mir
./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 \"""\").
Kann mir jemand dabei helfen? Vielen Dank!
< <(some command returning multiple lines)
, aber das ist nicht was du tust.