$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
$1是第一个参数。 $@是全部。
如何找到传递给shell的最后一个参数 脚本?
当前回答
这是复制函数的一部分:
eval echo $(echo '$'"$#")
要在脚本中使用,请这样做:
a=$(eval echo $(echo '$'"$#"))
解释(最嵌套的先):
$(echo '$'"$#")返回$[nr],其中[nr]是参数的个数。例如字符串$123(未展开)。 Echo $123返回第123个参数的值。 Eval只是将$123扩展为参数的值,例如last_arg。它被解释为一个字符串并返回。
从2015年年中开始使用Bash。
其他回答
这是复制函数的一部分:
eval echo $(echo '$'"$#")
要在脚本中使用,请这样做:
a=$(eval echo $(echo '$'"$#"))
解释(最嵌套的先):
$(echo '$'"$#")返回$[nr],其中[nr]是参数的个数。例如字符串$123(未展开)。 Echo $123返回第123个参数的值。 Eval只是将$123扩展为参数的值,例如last_arg。它被解释为一个字符串并返回。
从2015年年中开始使用Bash。
#! /bin/sh
next=$1
while [ -n "${next}" ] ; do
last=$next
shift
next=$1
done
echo $last
有一种更简洁的方法可以做到这一点。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
美国小妞tcsh:
set X = `echo $* | awk -F " " '{print $NF}'`
somecommand "$X"
我很确定这将是一个可移植的解决方案,除了作业。
这适用于所有posix兼容的shell:
eval last=\${$#}
来源:http://www.faqs.org/faqs/unix faq/faq/part2/section - 12. - html