如何在bash中的数组上循环运行并检查元素是否为空

时间:2019-01-23 12:59:19

标签: bash

我可以检查变量是否为空:

var=("")

if [[ -z "${var}" ]];
then
    echo "variable is empty"
else
    echo "variable is not empty"
fi

输出:

variable is empty

但是当我尝试将其应用于数组中的元素时,没有任何输出:

array=("")

for i in ${array[@]}
do
    if [[ -z "${i}" ]];
    then
        echo "element in array is empty"
    else
        echo "element in array is not empty"
    fi
done

1 个答案:

答案 0 :(得分:0)

由于没有元素,因此不会进入for循环。这就是为什么没有输出写入stdout的原因。

这样想:

while(there is record)
   loop

由于您的数组中没有记录,它会直接退出

检查此代码

array=("1" "2" "" "3")

for i in "${array[@]}"
do
    if [[ -z "${i}" ]];
    then
        echo "element in array is empty"
    else
        echo "element in array is not empty : $i"
    fi
done

Fiddle

相关问题