如果你能指出我失败的地方,我会很高兴的:
line="some text"
printf "other text"|read line;printf '%s' "$line"
输出:
一些文字
我想到的输出:
其他文字
这是次要的事情还是我错过了重要的事情?
答案 0 :(得分:5)
由于管道,$line
变量在子shell中分配,而父shell不记录更改。您可以使用shopt -s lastpipe
选项在当前shell
在此示例中,您只打印字符串,您也可以使用以下语法:
read line <<< "other text"; printf '%s' "$line"
或者通常您可以使用流程替换
read line < <(printf "other text"); printf '%s' "$line"
答案 1 :(得分:2)
像这样使用:
read line < <(printf "other text") && printf '%s' "$line"