${!#} 如何在 bash 中工作以获取最后一个命令行参数?

fle*_*erb 21 bash

从高级 Bash 脚本指南中,获取最后一个命令行参数:

或者:lastarg=${!#} 这是对变量的 间接引用$#
请注意,lastarg=${!$#}这不起作用。

jes*_*e_b 28

正如它所说,它是一个间接引用。以下面的例子为例:

$ var=test
$ test='Hello, world'
$ echo ${!var}
Hello, world
Run Code Online (Sandbox Code Playgroud)

现在,如果我要设置以下位置参数:

$ set -- one two three
Run Code Online (Sandbox Code Playgroud)

并且$#将代表位置参数的总数:

$ echo $#
3
Run Code Online (Sandbox Code Playgroud)

这意味着当我像${!#}我说的那样调用它时,请给我名为 的参数的值3

$ echo ${!#}
three
Run Code Online (Sandbox Code Playgroud)