$1是第一个参数。 $@是全部。

如何找到传递给shell的最后一个参数 脚本?


当前回答

这适用于所有posix兼容的shell:

eval last=\${$#}

来源:http://www.faqs.org/faqs/unix faq/faq/part2/section - 12. - html

其他回答

这是bash独有的:

echo "${@: -1}"

使用eval的解决方案:

last=$(eval "echo \$$#")

echo $last

要返回最近使用的命令的最后一个参数,请使用特殊形参:

$_

在这个实例中,如果在调用另一个命令之前在脚本中使用它,那么它将工作。

下面的方法对你有用。

@是参数数组。 :表示at $#是参数数组的长度。

所以结果是最后一个元素:

${@:$#} 

例子:

function afunction{
    echo ${@:$#} 
}
afunction -d -o local 50
#Outputs 50

注意,这是bash专用的。

我发现@AgileZebra的答案(加上@starfry的评论)最有用,但它将头设置为一个标量。数组可能更有用:

heads=( "${@: 1: $# - 1}" )
tail=${@:${#@}}

注意,这是bash专用的。

编辑:根据@f-hauri的评论删除了不必要的$(())。