2013-07-12 4 views
0
이 같은 떠들썩한 파티에서 배열을 채우고있어

에 : 나는 다른 사람을위한 자리로 가치를 몇 가지 들어배쉬 array- 대체 값 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