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

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


当前回答

这是bash独有的:

echo "${@: -1}"

其他回答

下面的方法对你有用。

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

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

${@:$#} 

例子:

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

注意,这是bash专用的。

#! /bin/sh

next=$1
while [ -n "${next}" ] ; do
  last=$next
  shift
  next=$1
done

echo $last

使用eval的解决方案:

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

echo $last

使用结合长度的索引:

echo ${@:${#@}} 

注意,这是bash专用的。

这是在将最后一个参数与所有前一个参数分开时发现的。 虽然有些答案确实得到了最后一个参数,但如果你还需要所有其他参数,它们就没有多大帮助了。这样做效果更好:

heads=${@:1:$#-1}
tail=${@:$#}

注意,这是bash专用的。