我有一些变数
VAR1=1
VAR2=
VAR3=3
我想通过循环调整它的速度,并为那些空的值赋予一个空值。
对于 $VAR1 $VAR2 $VAR3 中的某个变量
做
测试-z $somevar && $somevar=null
完成
但是它不起作用:(
最简单的方法可能是为每个变量分配一个默认值。例如:
${VAR:=value}
如果未设置或为空,则将
$VAR
的值设置为“value”。
要回答有关代码为何不起作用的具体问题,可能是因为您正在做
$somevar=null
而不是:
somevar=null
如果你想用文字字符串“null”设置变量,你可以这样做:
for somevar in VAR1 VAR2 VAR3; do
[[ -z ${!somevar} ]] && eval "${somevar}=null"
done
这样很安全。只需确保变量名称有效即可。
我偶然发现了这个和另一个问答,我在这里放置了相关答案:https://stackoverflow.com/a/79208087/2816571。 在当前问题的特定情况下,需要在 bash 循环中引用空变量才能迭代:
z=
for value in $z; do echo "value=${value}"; done #outputs nothing e.g. loop body is not executed
for value in "$z"; do echo "value=${value}"; done #outputs value=