为什么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