为什么在:
和之间添加空格会-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)
.
为避免参数扩展模式的模糊:
${parameter:-word}
这意味着替换word
if参数的扩展是unset或null; 否则参数的扩展被替换.
因此,对于切片操作,使用空格或括号:
$ set a b c d $ echo "${@: -1}" d $ echo "${@:(-1)}" d