2014-10-07 2 views
0

좋아, 이건 정말 간단한 일이지만, 2-3 시간이 지나면 왜 작동하지 않고 아무데도 나가지 않았어.Bash에서 배열의 문자열 비교 Scripting

나는 Bash/Shell-Script 프로그램을 만들려고 노력 중이며 그 중 한 지점에서 문자열 배열의 내용을 검사하여 문자열이 비어 있는지 확인하려고합니다. 내 코드는 다음과 같습니다 :

#Display any words the user corrected, and what he/she corrected it with (ignore blank corrections) 
printf "\n\n" "MISPELLED/CORRECTIONS" 
for ((i=0; i<${#words[*]}; i++)); do 
if [!"${corrections[$i]}"=""]; then //this is line 25 
    printf "\n ${words[$i]} ${corrections[$i]}" 
fi 
done 

내가 사용하는 방법은 긍정적이지 않습니다! 운영자는 합법적 이었지만, 또는 그것없이, 나는 런타임 오류 얻을 :

을 ./test : 25 행 : [=] :

를 찾을 수없는 명령 나는 필요하다면 나머지 코드를 게시 할 수 있습니다 나는 대부분 "수정"배열이 문자열로 올바르게 채워 졌다고 확신하지만.

+0

당신은'if'에'['과 사물의 나머지 부분 사이에 띄어쓰기를해야합니다. –

+0

가! 나는 적어도 한 번 시도 했었다는 것을 맹세 할 수 있었다! 그게 전부 였어, 고마워! – aredscout

+0

비어있는 경우에는'-z'를 사용하고 비어 있지 않은 경우에는'-n'을 사용하는 것이 더 좋습니다. string이 비어 있다면 (공백)'[-z "$ {corrects [$ i]}"]'가 참이된다. 'if [-n "$ {connections [$ i]}"]'문자열이 비어 있지 않으면 (비어 있지 않은 경우) true가됩니다. 배열 요소에 공백이없는 경우 (예 : – alvits

답변

0

셸에서 [은 명령이므로 명령의 전후에 공백을 두는 것이 중요합니다. 당신이 문자열이 비어 있지 않은지 확인하려면 그 꼭대기에, 당신은 -n를 사용할 수 있습니다

if [ -n "${corrections[$i]}" ]