Estaba leyendo esta pregunta y respuesta: zsh - la asignación de variables no está funcionando . La publicación explica cómo solucionarlo, pero no por qué. ¿Por qué falla la asignación de variables locales en ese caso?
También hay algunos otros ejemplos de comportamiento similar como este:
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}
}
Esto resulta en el siguiente resultado:
a
a b
a
Si pongo comillas alrededor de 'x = "$ (echo" a b ")" en todos los casos, obtengo la asignación de variable correcta.
Si ejecuto lo mismo en bash, obtengo 'a b' para todas las funciones.
¿Puede alguien explicar por qué bash y zsh están actuando de manera diferente aquí?
fuente
zsh -x test.sh +test.sh:1> setopt shwordsplit +test.sh:21> myfun +myfun:2> echo 'a b' +myfun:2> local 'x=a' b +myfun:2> echo a