$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
当前回答
有一种更简洁的方法可以做到这一点。bash脚本的参数可以放入数组中,这使得元素的处理更加简单。下面的脚本将始终打印传递给脚本的最后一个参数。
argArray=( "$@" ) # Add all script arguments to argArray
arrayLength=${#argArray[@]} # Get the length of the array
lastArg=$((arrayLength - 1)) # Arrays are zero based, so last arg is -1
echo ${argArray[$lastArg]}
样例输出
$ ./lastarg.sh 1 2 buckle my shoe
shoe
其他回答
使用eval的解决方案:
last=$(eval "echo \$$#")
echo $last
只需使用!$。
$ mkdir folder
$ cd !$ # will run: cd folder
shift `expr $# - 1`
echo "$1"
这将参数移位为参数的数量减1,并返回第一个(也是唯一一个)剩余的参数,这将是最后一个参数。
我只在bash中测试,但它应该也能在sh和ksh中工作。
这是bash独有的:
echo "${@: -1}"
echo $argv[$#argv]
现在我只需要添加一些文字,因为我的回答太短了。我需要添加更多的文字来编辑。