Bash array-替换0表示NULL

时间:2013-07-12 16:56:24

标签: arrays bash substitution

我正在用bash填充一个数组:

array[0]=$(awk '/Item/' logfile.log | awk '{print $21}' | awk -F'"' '{ print $2 }')

array[1]=$(awk '/Item/' logfile.log | awk '{print $26}' | awk -F'"' '{ print $2 }')

array[2]=$(awk '/Item/' logfile.log | awk '{print $31}' | awk -F'"' '{ print $2 }')

对于某些人,我得到一个值作为其他人的数字,没有输出,所以我相信这会用NULL填充数组元素。
我想找到包含NULL的数组元素并用“0”填充它们

我尝试了一些不同的东西,但我似乎无法在这里找到正确的方法。

我试过一件事: if [[ ${array[$i]} ]]; then array[$i]=0;fi

我认为我缺少qoutes或括号,但似乎无法找到正确的语法。

由于

1 个答案:

答案 0 :(得分:1)

你的条件错误。 [[ something ]]检查something是否为空。使用[[ -z thing ]]检查字符串是否为空:

array[0]="foo"
array[1]=""
array[2]="bar"
for i in {0..2}
do
    if [[ -z ${array[$i]} ]]; then array[$i]=0;fi
done
echo "${array[@]}"

这会打印foo 0 bar