我不明白它在 Bash shell 脚本中的含义:
MYSET=${*:- "-a"}
Run Code Online (Sandbox Code Playgroud)
谁能解释一下?
如果变量未设置或为空,则参数扩展${variable:-value}将扩展为字符串。这是一个标准参数扩展,不是shell 所特有的,但适用于所有 POSIX 兼容的 shell。valuevariablebash
特殊变量$*是一个字符串,由位置参数组成,并与$IFS作为分隔符的第一个字符(默认为空格)连接在一起。位置参数提供给脚本或者shell函数的参数,或者设置与set实用,是,是价值观$1,$2,$3等,这太不bash特异性。
您的命令将变量设置MYSET为$*(最有可能是提供给脚本的命令行参数,它们之间有空格),除非此值为空,在这种情况下MYSET将设置为-a带有初始空格。-a在这种特殊情况下,周围的引号没有区别。
命令行上的示例代码:
$ set --
$ MYSET=${*:- "-a"}; printf '%s\n' "$MYSET"
-a
$ set -- 1 2 3
$ MYSET=${*:- "-a"}; printf '%s\n' "$MYSET"
1 2 3
Run Code Online (Sandbox Code Playgroud)