循环空值变量

问题描述 投票:0回答:3

我有一些变数

VAR1=1

VAR2=

VAR3=3

我想通过循环调整它的速度,并为那些空的值赋予一个空值。

对于 $VAR1 $VAR2 $VAR3 中的某个变量

测试-z $somevar && $somevar=null

完成

但是它不起作用:(

bash
3个回答
2
投票

最简单的方法可能是为每个变量分配一个默认值。例如:

${VAR:=value}

如果未设置或为空,则将

$VAR
的值设置为“value”。

要回答有关代码为何不起作用的具体问题,可能是因为您正在做

$somevar=null

而不是:

somevar=null

0
投票

如果你想用文字字符串“null”设置变量,你可以这样做:

for somevar in VAR1 VAR2 VAR3; do
    [[ -z ${!somevar} ]] && eval "${somevar}=null"
done

这样很安全。只需确保变量名称有效即可。


0
投票

我偶然发现了这个和另一个问答,我在这里放置了相关答案: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= 
© www.soinside.com 2019 - 2024. All rights reserved.