2013-07-12 225 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