任何人都可以解释这种格式吗?
${name:-$devi}
例子:
"${1+"$@"}" will check for that first variable to be set , if not it will use that
command line argument.
这些变量之间有:-
什么区别?+
任何人都可以解释这种格式吗?
${name:-$devi}
例子:
"${1+"$@"}" will check for that first variable to be set , if not it will use that
command line argument.
这些变量之间有:-
什么区别?+
${var:-val}
与${var}
ifvar
设置且非 null 相同,否则扩展为val
. 这用于指定变量的默认值。
${var+val}
如果var
未设置,则扩展为空,否则扩展为val
. 这用于为变量提供替代值。
"${1+"$@"}"
是旧 shell 版本中错误的解决方法。如果你只是写了"$@"
,它会扩展到""
没有提供参数时,而不是扩展到什么都没有;然后,该脚本将就好像提供了一个单独的空参数一样。这个语法首先检查是否$1
设置了——如果没有第一个参数,那么显然根本没有参数。如果$1
未设置,则扩展为空,否则可以安全使用"$@"
.
大多数现代 shell 版本没有这个错误,所以你可以直接编写"$@"
而无需特殊检查。我不确定+
shell变量扩展中的构造是否还有其他常见用例。