0
入力から各行を読みたい。各行はwhileループで正常に読み込まれます。しかし、ループはステータス1で終了します。bash読み取りライン終了1
$ incr=0
$ while IFS='' read -r line || [[ -n "$line" ]] ; do
incr=$((incr+1));
echo "$incr: $line";
done < <(echo -e "one \ntwo\tthree\nfour")
1: one
2: two three
3: four
$ echo "status ${PIPESTATUS[@]}"
status 1
終了ステータスが0以外の理由は何ですか。
あなたは、whileループは常に0とは異なる状態で終了することを意味するのですか?私はちょうどそれに気づいた。あなたが少なくとも一度それを入力し、休憩で終了しない限り。 – kaligne
manページから: "exit whileとuntilコマンドのステータスは、実行された最後のdo listコマンドの終了ステータスです。実行されなかった場合は、ゼロ が実行されていません。 (ここでは 'list'はループの本体です)。 'PIPESTATUS'は代わりに* condition *の終了ステータスを取得するように見えますが、それがバグか文書化されていない期待であるかどうかはわかりません。 – chepner