2011-09-20 5 views

risposta

8

In zsh, è possibile utilizzare la Pparameter expansion flag o trattare @ come un array contenente i parametri posizionali:

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

un modo che funziona in tutte le shell stile Bourne tra cui zsh è

eval last=\$$# 

(Eri sulla strada giusta, ma eseguire echo solo per ottenere l'output è inutile.)

8
last=${@[-1]} 

dovrebbe fare il trucco. Più in generale,

${@[n]} 

produrrà i * n * esimo parametro, mentre

${@[-n]} 

produrrà i * n * esimo all'ultimo parametro.

0

L'espansione di parametro del colon non è in POSIX, ma questo funziona in almeno zsh, bash e ksh:

${@:$#} 

Quando non ci sono argomenti, ${@:$#} viene trattata come $0 in zsh e ksh, ma come vuoto in bash:

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

$ 
Problemi correlati