在尝试在bash脚本中保留进度日志时,我发现了一些我不理解的内容。可以使用以下行重现该问题:
var1=$(var2=$(echo "Hi!"))
执行此行后,var2
仍为空。我不明白导致此行为的原因(如果echo
生成的输出被重定向到某个地方,它不会进入var1
),更重要的是,我可能会做什么避免出现这个问题。
非常感谢任何形式的帮助(解释/指示)。
答案 0 :(得分:5)
由于您使用以下原因,原始字符串保持不变的原因为:
$(var2=$(echo "Hi!"))
这基本上改变了子shell中var2
的值,并且所做的任何更改仅保留在子shell中。一旦子shell退出,你就不会在父shell中获得更改值。