我想在此发布问答,因为我没有找到类似的东西.如果它已经存在,请将其标记为重复.
在Bash shell下运行的以下代码不起作用(应该只返回f,最后一个(第-1个)项$@):
$ set -- a b c d e f
$ echo ${@:-1}
a b c d e f
Run Code Online (Sandbox Code Playgroud)
Zai*_*aid 19
${parameter:-word}是一种参数扩展:
${parameter:-word}如果参数未设置或为null,则替换单词的扩展.否则,参数的值将被替换.
所以${@:-1}被解释为:
$@未设置或为null,则替换为1$@,因为它是由于后者是真的,所以它的所有荣耀都是echo印刷品$@
在:和之间放一些空格-:
$ echo ${@: -1}
f
Run Code Online (Sandbox Code Playgroud)
spi*_*nup 10
作为Zaid建议的空间的替代语法,您还可以使用圆括号来获得所需的功能:
echo ${@:(-1)}
Run Code Online (Sandbox Code Playgroud)
F