根据 Bash 手册,如果已为参数分配了值,则该参数将被设置。
在bash中,有以下两个不同的概念:
- 存在一个变量
- 变量已被赋值,即已设置?
unset
删除变量或函数。是否unset
创建一个变量- 变得不存在,或
- 仍然存在但没有被赋予任何价值?
是否
b=
给变量赋值b
?b
现在定了吗?变量是否
declare
会创建变量,即使变量存在?
答案1
如果未设置变量,则该变量不存在。例如,
unset var
echo ${var?"this is not set"}
-bash: var: this is not set
外壳显示一个错误信息如果var
没有设置。未echo
执行。 (查看 bash 手册页,了解检查变量并将值分配给存在的变量(但可能有值或没有值,或不存在的变量)的方法。)
更常见的情况通常是替换而不会出现错误,并且会像这样处理:
unset var
echo ${var:-This is a new value}
This is a new value
变量存在并具有值。例如,
var=123
echo ${var?"this is not set"}
123
变量存在但为空 ( ""
)
var=
echo ${var?"this is not set"}
echo 输出 的值var
,它什么也没有,后面跟着通常的换行符
赋值就像这样:
var=123
echo $var
123
声明用于为变量分配属性(查看 bash 手册页typeset
或declare
下面的**shell builtin commands**
以了解详细信息。