【发布时间】:2019-11-30 07:43:02
【问题描述】:
我正在尝试将命令的输出分配给多个变量,每个输出“单词”一个。正在做(Linux 上的 bash)
echo foo bar baz | read FOO BAR BAZ
echo $FOO $BAR $BAZ
只显示空字符串。在做
read FOO BAR BAZ < <(echo foo bar barz)
echo $FOO $BAR $BAZ
按预期工作。这里有什么问题?我认为使用管道是最明显和正确的方法。
【问题讨论】:
-
管道创建无法改变非子shell环境的shubshell。我会在一分钟内将副本与答案链接起来。
-
既然你已经有了一个工作代码,我想你只是想解释一下正在发生的事情。用户pbhd 很好地解释了它in his post。管道操作发生在子 shell 中,因此任何声明的变量都只能在其中访问。
-
This answer 解释了问题,但在 unix SE 上。当有人在 StackOverflow 上找到好的副本时,请链接它。我确定有一个。