2013-07-12 227 views
0

我从庆典填补了数组这样的阵列 - substitue 0:猛砸为NULL

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

你说的NULL是什么意思? Bash没有指针。你的意思是空串吗? –

回答

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

+0

是的,这是-z做的伎俩。布赖恩星期五放屁,我想。非常感谢! – geezer