如果您能指出我在这里失败的地方,我会很高兴:
line="some text"
printf "other text"|read line;printf '%s' "$line"
输出:
一些文字
我想到的输出:
其他文字
这是一个 subshell 的东西还是我错过了一些重要的东西?
如果您能指出我在这里失败的地方,我会很高兴:
line="some text"
printf "other text"|read line;printf '%s' "$line"
输出:
一些文字
我想到的输出:
其他文字
这是一个 subshell 的东西还是我错过了一些重要的东西?
因为管道,$line
变量是在子shell中赋值的,父shell不记录变化。您可以使用该shopt -s lastpipe
选项在当前shell中执行管道的最后一条命令
在这个例子中,你只打印一个字符串,你也可以使用这个语法:
read line <<< "other text"; printf '%s' "$line"
或者通常您可以使用流程替换
read line < <(printf "other text"); printf '%s' "$line"
像这样使用它:
read line < <(printf "other text") && printf '%s' "$line"