我想获取$*
的最后一个元素。目前,我发现的最佳方法是:
last=`eval "echo \\\$$#"`
但这似乎过于晦涩。
P
参数扩展标志 或将 @
视为包含位置参数的数组:last=${(P)#}
last=${@[$#]}
适用于所有 Bourne 风格 shell,包括 zsh 的一种方法是:
eval last=\$$#
你的思路是正确的,但运行 echo
仅为了获取其输出是无意义的。
last=${@[-1]}
${@[n]}
${@[-n]}
冒号参数扩展不在POSIX中,但至少在zsh、bash和ksh中可以使用:
${@:$#}
当没有参数时,在zsh和ksh中,${@:$#}
被视为$0
,但在bash中为空:
$ zsh -c 'echo ${@:$#}'
zsh
$ ksh -c 'echo ${@:$#}'
ksh
$ bash -c 'echo ${@:$#}'
$