Я читал этот вопрос и ответ: 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 ведут себя здесь по-разному?