如何在Linux中找到最后的位置参数

lee*_*n24 11 linux bash

我期待找到最后的位置参数.我知道找到参数的数量是$#,这在逻辑上是最后一个,但我需要找到并使用最后一个位置参数中的内容.

如果$#= 5,我想做5美元.

我试图做一些像$$#或$ {$#}这样的猜测,但无法得到它.

我需要使用它的实例是在if语句中或将其声明为另一个变量或使用echo.

我希望这很清楚.提前致谢.

Ign*_*ams 17

你想要的${!#},它将参数计数与间接结合起来.

  • 和 `eval last=\$$#` 对于缺乏通过 `!` 间接的 shell。 (2认同)

Coa*_*aku 5

这是另一种方式:

while [[ "$1" != "" ]];do
    last_parm=$1
    shift
done
echo $last_parm
Run Code Online (Sandbox Code Playgroud)

做个测试:

$ ./test.sh 1 2 3 4 5
5
Run Code Online (Sandbox Code Playgroud)

  • 非常重要的是要注意,此方法消除了所有位置参数,并使除最后一个之外的所有参数都无法访问。虽然在问题的有限上下文中这是一个正确的答案,但实际上它会对许多现实场景产生不良副作用。如果您真的不关心除最后一个参数之外的任何内容,则这种方法只能按原样接受。 (2认同)

Sam*_*man 5

这似乎是一种更直接的方法:

${@: -1}
Run Code Online (Sandbox Code Playgroud)

一些进一步的信息在这里。我不确定 Bash 之外的可移植性。