パイプとヒアドキュメントからの同じ入力で読み取りの動作が異なるのはなぜですか。
printf "" | while read line; do echo "line=$line"; done # outputs nothing
while read line; do echo "line=$line"; done <<< "" # outputs 'line='
2番目のケースで出力を無効にするにはどうすればよいですか?
パイプとヒアドキュメントからの同じ入力で読み取りの動作が異なるのはなぜですか。
printf "" | while read line; do echo "line=$line"; done # outputs nothing
while read line; do echo "line=$line"; done <<< "" # outputs 'line='
2番目のケースで出力を無効にするにはどうすればよいですか?
ヒアドキュメントの最後には暗黙の改行(\n
)があります。printf ""
何も出力しません。暗黙の改行を取り除く方法がわからない。
空の行をすべて破棄できる場合...
while read line; do if test -n "$line"; then echo "line=$line"; fi; done <<< ""
使ってみませんか$'\c'
:
man bash | less -p '\\c * suppress trailing newline'
str=""
while read line; do echo "line=$line"; done <<<$'\c'"${str}"
str="abc"
while read line; do echo "line=$line"; done <<<$'\c'"${str}"