$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
当前回答
使用结合长度的索引:
echo ${@:${#@}}
注意,这是bash专用的。
其他回答
只需使用!$。
$ mkdir folder
$ cd !$ # will run: cd folder
使用eval的解决方案:
last=$(eval "echo \$$#")
echo $last
GNU bash版本>= 3.0:
num=$# # get number of arguments
echo "${!num}" # print last argument
这是一个小hack:
for last; do true; done
echo $last
这也是非常可移植的(同样,应该与bash、ksh和sh一起工作),并且它不改变参数,这可能很好。
它利用了这样一个事实:如果你不告诉它循环什么,for会隐式地遍历参数,而且for循环变量没有作用域:它们保持它们设置的最后一个值。
这适用于所有posix兼容的shell:
eval last=\${$#}
来源:http://www.faqs.org/faqs/unix faq/faq/part2/section - 12. - html