El siguiente es un caso de prueba simple para lo que quiero ilustrar.La expansión de la variable es diferente en zsh que en bash
En bash,
# define the function f
f() { ls $args; }
# Runs the command `ls`
f
# Runs the fommand `ls -a`
args="-a"
f
# Runs the command `ls -a -l`
args="-a -l"
f
Pero en zsh
# define the function f
f() { ls $args }
# Runs the command `ls`
f
# Runs the fommand `ls -a`
args="-a"
f
# I expect it to run `ls -a -l`, instead it gives me an error
args="-a -l"
f
La última línea de la zsh al anterior, me da el siguiente error
ls: invalid option -- ' '
Try `ls --help' for more information.
creo zsh está ejecutando
ls "-a -l"
que es cuando me sale el mismo error.
Entonces, ¿cómo consigo el comportamiento de bash aquí?
No estoy seguro si tengo claro, hágamelo saber si hay algo que desea saber.
esto no responde a su pregunta, pero me gustaría considerar esto mejor: 'f() {$ ls "@"; }; f -a -l' –
@glenn, sí, definitivamente lo es. Como dije, esto es solo una ilustración de un problema mayor que tengo, donde tengo que usar la variable args. –
@ShrikantSharat Si está escribiendo scripts para bash y zsh (y ksh), no haga esto con la variable 'args'. Use una matriz en su lugar. – Gilles