重定向问题

时间:2014-07-23 15:44:29

标签: bash shell

在尝试在bash脚本中保留进度日志时,我发现了一些我不理解的内容。可以使用以下行重现该问题:

var1=$(var2=$(echo "Hi!"))

执行此行后,var2仍为空。我不明白导致此行为的原因(如果echo生成的输出被重定向到某个地方,它不会进入var1),更重要的是,我可能会做什么避免出现这个问题。

非常感谢任何形式的帮助(解释/指示)。

1 个答案:

答案 0 :(得分:5)

由于您使用以下原因,原始字符串保持不变的原因为:

 $(var2=$(echo "Hi!"))

这基本上改变了子shell中var2的值,并且所做的任何更改仅保留在子shell中。一旦子shell退出,你就不会在父shell中获得更改值。