如果我要求 bash 回显第 -1 个参数,它会打印 hb1:
echo $-1
hb1
为什么?它正在访问什么?
答案1
您并不是要求它打印第一个参数,即:$1
。
你要求的是一个特殊参数:
-
(
$-
连字符。)扩展为调用时指定的当前选项标志、通过 set 内置命令或由 shell 本身设置的选项标志(例如 -i 选项)。
所以你的选择是:hb
然后您会看到1
您添加的内容随后被打印(因此hb1
)。
如果您正在寻找最后一个参数(不确定这是否是 -1 参数的意思),您可以使用Shell 参数扩展形式如下:
$ set -- one two three
$ echo "${@: -1}"
three