for循环检查多个var以返回空var的名称

时间:2014-02-05 21:02:48

标签: 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 var4; do
    if [[ -n "$var" ]]; then
    echo "Fix that: $var ${!var}"
    fi
done

我已经测试了几种方法来实现这一点,我想保持它非常简单,我无法弄明白。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

使用变量间接:

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