最佳答案
我一直试图从程序输出中读入环境变量的输入,如下所示:
echo first second | read A B ; echo $A-$B
结果就是:
-
A 和 B 总是空的。我了解了 bash 在 sub-shell 中执行管道输入命令的情况,这基本上阻止了通过管道输入进行读取。不过,以下事项:
echo first second | while read A B ; do echo $A-$B ; done
似乎奏效了,结果是:
first-second
有人能解释一下这里的逻辑吗?是不是 while
... done
结构中的命令实际上是在与 echo
相同的 shell 中执行的,而不是在子 shell 中?