为什么在 :
和 -1
之间添加空格会改变下面显示的行为?
(ins)$ set a b c d
(ins)$ echo ${@:-1}
a b c d
(ins)$ echo ${@: -1}
d
(ins)$
同样的行为也会影响 $*
。
我正在运行 GNU bash,版本 4.4.5(1)-release (x86_64-unknown-linux-gnu)
。
最佳答案
为避免参数扩展模式产生歧义:
${parameter:-word}
表示如果`参数未设置或为空,则替换word
的扩展;否则替换参数的扩展。
所以对于切片操作,使用空格或括号:
$ set a b c d
$ echo "${@: -1}"
d
$ echo "${@:(-1)}"
d
关于arrays - bash:为什么 ${@:-1} 的值与 ${@: -1} 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41660700/