Sh 解释${var:-val}和${var+;val}
有人能解释一下这种格式吗Sh 解释${var:-val}和${var+;val},sh,Sh,有人能解释一下这种格式吗 ${name:-$devi} 例如: "${1+"$@"}" will check for that first variable to be set , if not it will use that command line argument. 这些变量之间的:-和+有什么区别 ${var:-val} 与${var}相同,如果var设置为非空,否则它将扩展为val。这用于指定变量的默认值 ${var+val} "${1+"$
${name:-$devi}
例如:
"${1+"$@"}" will check for that first variable to be set , if not it will use that
command line argument.
这些变量之间的:-
和+
有什么区别
${var:-val}
与${var}
相同,如果var
设置为非空,否则它将扩展为val
。这用于指定变量的默认值
${var+val}
"${1+"$@"}"
如果var
未设置,则扩展为nothing,否则扩展为val
。这用于为变量提供备用值
${var+val}
"${1+"$@"}"
是解决旧shell版本中错误的一种方法。如果您刚刚编写了“$@”
,那么当没有提供参数时,它将扩展到”
,而不是什么都不扩展;然后,脚本将充当提供了一个空参数的角色。该语法首先检查是否设置了$1
——如果没有第一个参数,那么显然根本就没有参数。如果未设置$1
,它将扩展为零,否则可以安全地使用“$@”
大多数现代的shell版本都没有这个bug,因此您只需编写“$@”
,而无需进行特殊检查。我不确定shell变量扩展中的+
构造是否还有其他常见用例
与${var}
相同,如果var
设置为非空,否则它将扩展为val
。这用于指定变量的默认值
${var+val}
"${1+"$@"}"
如果var
未设置,则扩展为nothing,否则扩展为val
。这用于为变量提供备用值
${var+val}
"${1+"$@"}"
是解决旧shell版本中错误的一种方法。如果您刚刚编写了“$@”
,那么当没有提供参数时,它将扩展到”
,而不是什么都不扩展;然后,脚本将充当提供了一个空参数的角色。该语法首先检查是否设置了$1
——如果没有第一个参数,那么显然根本就没有参数。如果未设置$1
,它将扩展为零,否则可以安全地使用“$@”
大多数现代的shell版本都没有这个bug,因此您只需编写
“$@”
,而无需进行特殊检查。我不确定shell变量扩展中的+
构造是否还有其他常见用例。您是否阅读过手册页?我不确定我是否能更好地解释它。它只是我所指代码中的一部分。我无法在该表示中区分“:-”和“+”。我得到了解决方案,${variable:?word}如果未定义或null | |${variable:-word}如果未定义或null | |${variable:+word},请使用新值与上述| |${variable:=word}相反,如果未定义或为空,请使用新值,然后重新定义。您是否尝试阅读手册页?我不确定我是否能更好地解释它。它只是我所指代码中的一部分。我无法在该表示中区分“:-”和“+”。我得到了解决方案,${variable:?word}如果未定义或null | |${variable:-word}如果未定义或null | |${variable:+word},请使用新值与上述| |${variable:=word}相反,如果未定义或为null,请使用新值,然后重新定义。