在循环bash中使用变量

在循环bash中使用变量,bash,loops,variables,eval,Bash,Loops,Variables,Eval,我有四个变量,比如: a1="11" a2="22" b1="111" b2="222" 现在我想创建一个循环来检查它是否为null: for (( i=1; i<=2; i++)); do eval "a=a$i" eval "b=b$i" if [ -z $a ] || [ -z $b ]; then echo "v

我有四个变量,比如:

a1="11"
a2="22"
b1="111"
b2="222"
现在我想创建一个循环来检查它是否为null:

for (( i=1; i<=2; i++)); do
    eval "a=a$i"
    eval "b=b$i"
    if [ -z $a ] || [ -z $b ]; then
        echo "variable-$a: condition is true"
    fi
done
但我需要检查一下:

11
22
111
222

使用变量间接扩展:

for (( i=1; i<=2; i++)); do
    a=a$i
    b=b$i
    if [ -z "${!a}" ] || [ -z "${!b}" ]; then
        echo "variable-$a: condition is true"
    fi
done
虽然你可以:

for (( i=1; i<=2; i++)); do
    eval "a=\"\$a$i\""
    eval "b=\"\$b$i\""
    if [ -z "$a" ] || [ -z "$b" ]; then
        echo "variable-a$i: condition is true"
    fi
done

对于((i=1;它是数字零(
0
),有空变量(
),有未设置的变量。但是
null
应该是什么?谢谢,请检查更新是否可以将它们作为
“11 22 111 222”
表单的一个变量传递?不,它们是分开的
for (( i=1; i<=2; i++)); do
    a="a$i"
    b="b$i"
    # Remember to quote variable expansions!
    if [ -z "$a" ] || [ -z "$b" ]; then
        echo "variable-$a: condition is true"
    fi
done
for (( i=1; i<=2; i++)); do
    eval "a=\"\$a$i\""
    eval "b=\"\$b$i\""
    if [ -z "$a" ] || [ -z "$b" ]; then
        echo "variable-a$i: condition is true"
    fi
done