複数の行を返すコマンドがあります。さらに処理するために、これらの行の各単一行を処理する必要があります。
私の現在のコードはIFS(内部フィールド区切り文字)を変更することで機能します。
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
IFSを変更せずに、複数行出力の単一行にアクセスするより良い方法はありますか?特に、IFSを変更すると、スクリプトの読みやすさが低下します。
更新:チョロバからのものなど、回答を機能させるのに問題があります。
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
くれます
./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 \"""\").
誰でもこれを手伝ってくれる?ありがとう!
< <(some command returning multiple lines)
、それはあなたがしていることではありません。