2014-10-07 86 views
0

好的,這是一件非常簡單的小事情,但它已經到了耗盡2-3小時的時間,試圖找出爲什麼這種方式無法正常工作並且無處可尋。在Bash腳本中比較數組中的字符串

我想製作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' ['和其餘的事情之間的間隔。 – 2014-10-07 23:08:16

+0

Gah!我可以發誓我至少曾嘗試過一次!嗯,就是這樣,謝謝! – aredscout 2014-10-07 23:14:46

+0

最好使用'-z'來檢查是否爲空或'-n'爲非空。 '如果[-z] $ {corrections [$ i]}「]'如果字符串爲空(空白)則爲真。 '如果[-n] $ {connections [$ i]}「]'如果字符串不爲空(非空),則爲真。 – alvits 2014-10-07 23:17:57

回答

0

在shell中,[是一個命令,所以在它之前和之後留出空格是很重要的。最重要的是,如果你想檢查一個字符串是不是空的,你可以使用-n

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