有什麼不對下面的表達式:達到極限後,也條件沒有得到真正的
...
if [ $i -ge ${tLen} ]; then
echo "Maximum limit reached, i=$i"
fi
i=$(($i+1))
...
這個說法while
循環中。 i
是計數器變量,其初始值爲0. tLen
存儲數組的長度,我正在遍歷的數組。 即使i
達到tLen
,此條件仍未獲得true
。我哪裏錯了?
這是我的完整代碼:
read filename
words=(5 2)
i=0
sed 's/ /\n/g' "$filename" >"tmp.txt"
while read word
do
words[i]=$word
i=$(($i+1))
awk "/$word/ {count += 1} END{print count}" "tmp.txt" >>"tmp2.dat"
done <"tmp.txt"
i=0
tLen=${#words[@]}
echo "Length of words: ${tLen}"
declare -A wordMap
while read count
do
if [ $i -ge ${tLen} ]; then
echo "Maximum length reached, i=$i"
break
fi
wordMap["${words[$i]}"]=$count
i=$(($i+1))
done <"tmp2.dat"
rm "tmp.txt"
rm "tmp2.dat"
其實我試圖計算給定文本中的每個詞的出現次數...
請發表您的其他代碼。這可能會導致[subshell問題](http://mywiki.wooledge.org/BashPitfalls#grep_foo_bar_.7C_while_read_-r.3B_do_.28.28count.2B-.2B-.29.29.3B_done) – l0b0 2012-02-13 09:29:03
適用於我。嘗試在第一行使用'#!/ bin/bash -xv'運行以查看變量中的內容。 – choroba 2012-02-13 09:50:41
我得到錯誤'壞數組下標'是什麼意思? – batman 2012-02-13 09:53:29