0

我正在从 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 或括号,但似乎无法找到正确的语法。

谢谢

4

1 回答 1

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

于 2013-07-12T17:22:38.480 回答