爲什麼read與管道相同的輸入和一個定界符表現不同:爲什麼「閱讀」的行爲與相同的輸入不同?
printf "" | while read line; do echo "line=$line"; done # outputs nothing
while read line; do echo "line=$line"; done <<< "" # outputs 'line='
我怎樣才能在第二種情況下禁用輸出?
爲什麼read與管道相同的輸入和一個定界符表現不同:爲什麼「閱讀」的行爲與相同的輸入不同?
printf "" | while read line; do echo "line=$line"; done # outputs nothing
while read line; do echo "line=$line"; done <<< "" # outputs 'line='
我怎樣才能在第二種情況下禁用輸出?
如何使用$'\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}"
這裏的文檔末尾有一個隱含的換行符(\n
); printf ""
什麼都不輸出。我不知道如何擺脫隱含的換行符。
如果你可以放棄所有的空行...
while read line; do if test -n "$line"; then echo "line=$line"; fi; done <<< ""
我不熟悉''<<<運營商,這是什麼呢? – Jonathan 2011-03-21 15:16:06
如果您使用'echo'或'printf'\ n「'而不是printf,則第一條語句在第二條語句中的結果相同。 – sudocode 2011-03-21 15:17:15
這是一個「這裏的字符串」,就像它一樣。作爲here文檔處理的字符串。 – geekosaur 2011-03-21 15:18:04