问题很简单。我在 bash 中有以下脚本:
#!/bin/bash
a=`echo " 1 2 3 hello " | egrep -o "1"`
b=`echo " 1 2 3 hello " | egrep -o "2"`
c=`echo " 1 2 3 hello " | egrep -o "4"`
echo $a
echo $b
echo $c
echo "--"
echo "first print : "
if [ -z $c ]; then echo "zero length"; fi # condition met
echo "second print : "
for i in $a $b $c; do
if [ -z $i ]; then echo "zero length" # does not recognize variable $c , no print
fi
done
有3个变量,a,b和c。c 是唯一一个为空的,它内部的字符串长度为零。第一个“if”证明了这一点,但是,当我尝试将变量添加到“for”迭代时,条件无法识别。我怎样才能使这项工作?我需要这样做,因为我有很多变量需要在一个循环中进行测试,而不是对每个变量都使用一个“if”。太感谢了。
始终引用您的变量扩展1:
当
$c
为空时,$a $b $c
则为仅包含两项的列表,因此仅执行两次迭代。你可以通过运行来看到这一点set -x
。在您的原始版本中:而使用正确引用的版本: