为什么在:
和-1
之间添加空格会改变下面显示的行为?
(ins)$ set a b c d
(ins)$ echo ${@:-1}
a b c d
(ins)$ echo ${@: -1}
d
(ins)$
同样的行为也会影响$*
。
我正在运行GNU bash, version 4.4.5(1)-release (x86_64-unknown-linux-gnu)
。
答案 0 :(得分:5)
为避免参数扩展模式的歧义:
${parameter:-word}
表示替换word
的扩展,如果`参数未设置或为null;否则参数的扩展被替换。
因此,对于切片操作,使用空格或括号:
$ set a b c d
$ echo "${@: -1}"
d
$ echo "${@:(-1)}"
d