我正在尝试将Linux中的英语词典读成关联数组,使用单词作为键和预定义字符串作为值。这样我就可以按键查找单词以查看它们是否存在。另外,我需要所有的单词都是小写的。这很简单,但bash语法正在阻碍我。当我运行下面的代码时,我得到一个'错误的数组下标'错误。有什么想法可能是什么?
function createArrayFromEnglishDictionary(){
IFS=$'\n'
while read -d $'\n' line; do
#Read string into variable and put into lowercase.
index=`echo ${line,,}`
englishDictionaryArray[$index]="exists"
done < /usr/share/dict/words
IFS=$' \t\n'
}
答案 0 :(得分:4)
$index
在某些时候是空的。你还有一个totally pointless use of echo,假设你想要逐行而不是压缩空格。只需使用index="${line,,}"
。
答案 1 :(得分:2)
要在bash中使用关联数组,需要bash版本4,并且需要将数组声明为带declare -A englishDictionaryArray
的关联数组
答案 2 :(得分:2)
我认为以下示例将有所帮助..
$ declare -A colour
$ colour[elephant]="black"
$ echo ${colour[elephant]}
black
$ index=elephant
$ echo ${colour["$index"]}
black
答案 3 :(得分:0)
结合您的工作和其他答案,试试这个:
我正在使用GNU bash,版本4.2.37(1)-release(x86_64-pc-linux-gnu)
#!/bin/bash
declare -A DICT
function createDict(){
while read LINE; do
INDEX=${LINE,,}
DICT[$INDEX]="exists"
done < /usr/share/dict/words
}
createDict
echo ${DICT[hello]}
echo ${DICT[acdfg]}
echo ${DICT["a's"]}