我正在阅读这个问题和答案:zsh - 变量赋值不起作用。帖子解释了如何修复它,但没有说明原因。为什么在这种情况下局部变量赋值会失败?
还有一些类似行为的例子,例如:
myfun()
{
local x=$(echo "a b"); echo ${x}
}
myfun2()
{
local x
x=$(echo "a b")
echo ${x}
}
myfun3()
{
local x=$(echo "a b")
echo ${x}
}
输出结果如下:
a
a b
a
如果我在所有情况下都将引号括在“x="$(echo "a b")” 上,我就会得到正确的变量分配。
如果我在 bash 中运行同样的东西,所有函数都会得到“a b”。
有人能解释一下为什么 bash 和 zsh 在这里的行为不同吗?