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