我不明白 Bash shell 脚本中的含义:
MYSET=${*:- "-a"}
谁能解释一下吗?
答案1
如果变量未设置或为空,参数扩展${variable:-value}
将扩展为字符串。这是一个标准参数扩展,对于 shell 来说并不特殊,但适用于所有 POSIX 兼容的 shell。value
variable
bash
特殊变量$*
是一个字符串,由位置参数和第一个字符$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