Saya punya perintah mengembalikan beberapa baris. Untuk pemrosesan lebih lanjut, saya perlu memproses setiap baris dari baris tersebut.
Kode saya saat ini berfungsi dengan memodifikasi IFS ( Pemisah Bidang Internal ):
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
Saya bertanya-tanya, apakah ada cara yang lebih baik untuk mengakses satu baris dari beberapa garis keluaran, satu tanpa memodifikasi IFS? Terutama keterbacaan skrip saya menjadi buruk dengan memodifikasi IFS.
Pembaruan: Saya mengalami masalah untuk mendapatkan jawaban berfungsi, mis. Yang dari 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
memberi saya
./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 \"""\").
Adakah yang bisa membantu saya dengan ini? Terima kasih!
< <(some command returning multiple lines)
, tetapi bukan itu yang Anda lakukan.