Bash echo $-1 打印 hb1。为什么?

Bash echo $-1 打印 hb1。为什么?

如果我要求 bash 回显第 -1 个参数,它会打印 hb1:

echo $-1
hb1

为什么?它正在访问什么?

答案1

您并不是要求它打印第一个参数,即:$1

你要求的是一个特殊参数:

-

$-连字符。)扩展为调用时指定的当前选项标志、通过 set 内置命令或由 shell 本身设置的选项标志(例如 -i 选项)。

所以你的选择是:hb

然后您会看到1您添加的内容随后被打印(因此hb1)。


如果您正在寻找最后一个参数(不确定这是否是 -1 参数的意思),您可以使用Shell 参数扩展形式如下:

$ set -- one two three
$ echo "${@: -1}"
three

相关内容