在Bash中写“[[-z $ var1]] || [[-z $ var2]] || ...”的简单方法?

时间:2018-01-10 22:14:16

标签: bash shell pipe

我正在尝试检查多个变量并查看其中是否有任何变量为零,我想出了以下内容:

if [[ -z $var1 ]] || [[ -z $var2 ]] || [[ -z $var3 ]] || [[ -z $var4 ]] || [[ -z $var5 ]] || [[ -z $var6 ]] || [[ -z $var7 ]] || [[ -z $var8 ]]; then
    echo GOOD
fi

这样可行,但除此之外还有其他任何可靠的选择吗?

1 个答案:

答案 0 :(得分:2)

你可以松开一些括号,如下所示:

if [[ -z $var1 || -z $var2 || -z $var3 || -z $var4 || -z $var5 || -z $var6 || -z $var7 || -z $var8 ]] ; then
    echo GOOD
fi

或者,正如Charles Duffy在评论中建议的那样,你可以改变这种情况并最终得到更短的东西:

if ! [[ $var1 && $var2 && $var3 && $var4 && $var5 && $var6 && $var7 && $var8 ]] ; then
    echo GOOD
fi