bash:为什么$ {@: - 1}的值与$ {@:-1}不同?

时间:2017-01-15 11:43:15

标签: arrays bash

为什么在:-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)

1 个答案:

答案 0 :(得分:5)

为避免参数扩展模式的歧义:

${parameter:-word}

表示替换word的扩展,如果`参数未设置或为null;否则参数的扩展被替换。

因此,对于切片操作,使用空格或括号:

$ set a b c d

$ echo "${@: -1}"
d

$ echo "${@:(-1)}"
d