2011-09-20 18 views

Respuesta

8

En zsh, puede utilizar el Pparameter expansion flag o tratar @ como una matriz que contiene los parámetros posicionales:

last=${(P)#} 
last=${@[$#]} 

una manera que funcione en todos los del estilo Bourne incluyendo zsh es

eval last=\$$# 

(Estaba en el camino correcto, pero ejecutar echo solo para obtener su resultado no tiene sentido.)

8
last=${@[-1]} 

debería hacer el truco. Más en general,

${@[n]} 

se obtendrán los * n * º parámetro, mientras que

${@[-n]} 

se obtendrán los * n * º al último parámetro.

0

La expansión parámetro de colon no está en POSIX, pero esto funciona en al menos zsh, golpe, y ksh:

${@:$#} 

Cuando no hay argumentos, ${@:$#} se trata como $0 en zsh y ksh pero como vacío en bash:

$ zsh -c 'echo ${@:$#}' 
zsh 
$ ksh -c 'echo ${@:$#}' 
ksh 
$ bash -c 'echo ${@:$#}' 

$ 
Cuestiones relacionadas