我正在嘗試在文件中進行單詞計數,並將文件中的每個單詞用作關聯數組中的鍵。值應該是這個詞的出現。Bash將星形字符視爲關聯數組中的單詞
while read line; do
((occs["$line"]=${occs[$line]}+1))
done < $predfile
現在的問題是,有可能是文件中的*(星號),我希望把這個明星作爲一個詞。然而,當我要輸出的字的出現次數與
for i in "${!occs[@]}"
do
echo "$i : ${occs[$i]}" >> $resultfile
done
然後bash改掉輸出$ {用OCC [*]}當它到達的明星和我「的OCC [*]:壞數組下標」。我可以使用if語句來處理這個問題,但我想知道是否可以使用轉義鍵填充數組鍵。
你介意加入一個小樣本的輸入,顯示上述問題?注意:'declare -A occs; I = 「*」;的OCC [$ I] = 100; echo「$ i:$ {occs [$ i]}」'按預期工作。所以這個問題一定在別的地方。你有沒有聲明關聯數組? – Rubens
是的,我用declare -A聲明瞭它。你可以使用我上面的代碼,並創建一個文件,你可以用上面的$ predfile作爲我的$ predfile文件,其中包含以下內容:* * *(每個單詞包括用換行符分隔的*) – nico1510
這個問題似乎源於嘗試使用'*'如在'((...))'表達式中的索引中。可能有一種方法可以解決這個問題,但我認爲這是一個標誌,表明「bash」對於你正在做的任何事情都是錯誤的語言。 – chepner