$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
当前回答
下面的方法对你有用。
@是参数数组。 :表示at $#是参数数组的长度。
所以结果是最后一个元素:
${@:$#}
例子:
function afunction{
echo ${@:$#}
}
afunction -d -o local 50
#Outputs 50
注意,这是bash专用的。
其他回答
使用结合长度的索引:
echo ${@:${#@}}
注意,这是bash专用的。
这是复制函数的一部分:
eval echo $(echo '$'"$#")
要在脚本中使用,请这样做:
a=$(eval echo $(echo '$'"$#"))
解释(最嵌套的先):
$(echo '$'"$#")返回$[nr],其中[nr]是参数的个数。例如字符串$123(未展开)。 Echo $123返回第123个参数的值。 Eval只是将$123扩展为参数的值,例如last_arg。它被解释为一个字符串并返回。
从2015年年中开始使用Bash。
shift `expr $# - 1`
echo "$1"
这将参数移位为参数的数量减1,并返回第一个(也是唯一一个)剩余的参数,这将是最后一个参数。
我只在bash中测试,但它应该也能在sh和ksh中工作。
echo $argv[$#argv]
现在我只需要添加一些文字,因为我的回答太短了。我需要添加更多的文字来编辑。
下面的方法对你有用。
@是参数数组。 :表示at $#是参数数组的长度。
所以结果是最后一个元素:
${@:$#}
例子:
function afunction{
echo ${@:$#}
}
afunction -d -o local 50
#Outputs 50
注意,这是bash专用的。