2011-09-20 146 views

回答

8

在zsh中,您既可以使用Pparameter expansion flag或含位置参数对待@作为数组:

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

,在所有的Bourne风格的外壳,包括zsh的工作的方式是

eval last=\$$# 

(你在正确的轨道,但运行echo只是为了得到它的输出是毫无意义的。)

8
last=${@[-1]} 

应该这样做。更一般地,

${@[n]} 

,将获得* N *个参数,而

${@[-n]} 

,将获得* N *日到最后一个参数。

0

结肠参数扩展不在POSIX,但这种工作在至少zsh中时,bash,和ksh:当没有参数,${@:$#}在的zsh和ksh视为$0

${@:$#} 

在bash中为空:

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

$