2 votos

la matriz zsh de la variable no funciona

Utilizando macos 10.14.2 (18C54) con zsh (la última versión no pude encontrar ninguna versión con zsh). Si creo una matriz de una cadena funciona. Pero si uso una variable que contiene la cadena de división no funciona. ¿Es este comportamiento esperado o algo malo con mi entorno? ¿Cuál es la forma correcta de hacer esto si lo estoy haciendo mal?

 ~ arr=(foo bar)
~ echo $arr[1]
foo
~ val='foo bar'
~ arr=($val)
~ echo $arr[1]
foo bar
 

2voto

David Anderson Puntos 2189

Supongo que si quería hacer esto en zsh, debe hacer lo siguiente.

~ arr=(foo bar)
~ echo $arr[1]
foo
~ val='foo bar'
~ eval "arr=($val)"
~ echo $arr[1]
foo

Cuando entraron arr=($val), zsh interpretado esto como arr=("foo bar") aunque no explícitamente poner un par de " de todo $val. Cuando entré eval "arr=($val)", zsh interpretado esto como arr=(foo bar). El uso de eval puede ser confuso. En caso de duda, puede utilizar el siguiente experimento.

Digamos que usted quiere saber lo eval ve y, por tanto, lo que realmente va a ser ejecutado. Comenzar con la instrucción que se muestran a continuación. Aquí, supongo que ya ha entrado val='foo bar'.

eval "arr=($val)"

Ahora reemplace eval con echo como se muestra a continuación.

echo "arr=($val)"

Introducir el comando anterior se obtiene el siguiente resultado.

arr=(foo bar)

Esto lo zsh realmente se ejecuta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X