Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash for循环检查多个变量以返回空变量的名称_Bash_Loops_For Loop_Var - Fatal编程技术网

Bash for循环检查多个变量以返回空变量的名称

Bash for循环检查多个变量以返回空变量的名称,bash,loops,for-loop,var,Bash,Loops,For Loop,Var,我正在写一个bash脚本,我有一个var的列表 var1="chicken" var2="sweet potatoe" var3="" var4="rice" 我想返回var本身的名称,它是空的 for var in var1 var2 var3 var4; do if [[ ! -n "$var" ]]; then echo "Fix that: $var ${!var}" fi done 这不算回报 相反的工作 for var in var1 var2 var3

我正在写一个bash脚本,我有一个var的列表

var1="chicken"
var2="sweet potatoe"
var3=""
var4="rice"
我想返回var本身的名称,它是空的

for var in var1 var2 var3 var4; do
    if [[ ! -n "$var" ]]; then
    echo "Fix that: $var ${!var}"
    fi
done
这不算回报

相反的工作

for var in var1 var2 var3 var4; do
    if [[ -n "$var" ]]; then
    echo "Fix that: $var ${!var}"
    fi
done
我已经测试了几种方法来实现这一点,我想保持它非常简单,我想不出来


感谢您的帮助。

使用变量间接寻址:

for var in var1 var2 var3 var4; do
    [[ -z ${!var} ]] && echo empty: $var
done

OP运气不好,因为已经使用了
${!var}
的间接扩展,可能没有完全理解它的含义。请参阅:
empty: var3