を取得されていません。 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"
は実際に私が与えられたテキスト中の各単語の頻度を計算しようとしています...
残りのコードを記載してください。それはあなたが[サブシェルの問題]を持っている可能性があります(http://mywiki.wooledge.org/BashPitfalls#grep_foo_bar_.7C_while_read_-r.3B_do_.28.28count.2B-.2B-.29.29.3B_done) – l0b0
私のために働く。最初の行で '#!/ bin/bash -xv'を実行して、変数の内容を確認してください。 – choroba
Imに「bad array subscript」というエラーが表示されるのはどういう意味ですか? – batman