Bash ${@:-1}如何展开到最后一个参数

Bash ${@:-1}如何展开到最后一个参数,bash,Bash,我知道${para:[start]:[length]}和$符号,但我无法找出${var:-1}如何计算到最后一个参数。将其视为length-1,它将在$var中的最后一个字符中解析。这同样适用于${var:(-2)},…: var='hello' printf "%s\n" "${var:(-1)}" # o printf "%s\n" "${var:(-2)}" # lo printf "%s\n" "${var:(-3)}" # llo 从bash(1)手册页: 如果参数为@。。。抵消 -

我知道
${para:[start]:[length]}
$
符号,但我无法找出
${var:-1}
如何计算到最后一个参数。

将其视为
length-1
,它将在
$var
中的最后一个字符中解析。这同样适用于
${var:(-2)}
,…:

var='hello'
printf "%s\n" "${var:(-1)}" # o
printf "%s\n" "${var:(-2)}" # lo
printf "%s\n" "${var:(-3)}" # llo
bash(1)
手册页:

如果参数为@。。。抵消 -1计算为最后一个位置参数


您也可以简单地使用空格来区分
${var:-1}
${var:-1}
@chepner我知道,但正如您在下面看到的,这很容易被误读为
${var:-1}
。最好作为旁注明确说明,这不应与第页中解释的
{para:-1}
相混淆。注意@andlrc的答案中使用的
()
,并查看下面的注释。。