gpt4 book ai didi

arrays - 关联数组中的错误数组下标错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:13 24 4
gpt4 key购买 nike

我正在尝试使用以下选项在 Bash 中创建一个字典程序:1. 添加一个词2.更新意义3.打印词典4.搜索一个词5.按关键字搜索

同样,我创建了 2 个关联数组,1 个用于存储单词 - 含义,另一个用于存储单词 - 关键字。

问题是我无法在数组中存储值。每次我尝试这样做时,它都会给我一个错误dict[$word]: 错误的数组下标

这是第 1 部分的代码

echo
echo -n "Enter a word : "
read $word
echo
echo -n "Enter it's meaning : "
read $meaning
echo
echo -n "Enter some keywords(with space in between) to describe the word : "
read $keyword

dict[$word]=$meaning
keywords[$word]=$keyword
;;

我还尝试按照某些帖子中的建议插入以下代码以删除新行,但结果相同。

word=`echo $word | grep -s '\n'`
keyword=`echo $keyword | grep -s '\n'`

也尝试过以下方式:

dict["$word"]="$meaning"
keywords["$word"]="$keyword"
;;

输出:dict[$word]:错误的数组下标

最佳答案

读取变量时,您可以在变量名前加上 $。 (或包裹在 $() 中)。

为变量赋值时,您不会在变量名前加上$。 .

在您的示例中,您的 3x echo/read session 正在尝试为您的变量赋值值,但您已在变量前加上$。 ,这意味着您的变量未按预期设置;这反过来可能会产生你的错误,因为 $word未设置/定义(取决于 bash 的版本)。

您应该能够通过以下代码片段明白我的意思:

unset word
echo
echo -n "Enter a word : "
read $word
echo ".${word}."

你得到什么作为输出? ...<whatever_you_typed_in>.

您的关联数组也可能有问题(取决于 bash 版本);正如 George 所提到的,您应该谨慎行事并显式声明您的关联数组。

我建议像这样编辑您的输入脚本(删除 $ 变量上的前导 read;显式声明您的关联数组):

echo
echo -n "Enter a word : "
read word
echo
echo -n "Enter it's meaning : "
read meaning
echo
echo -n "Enter some keywords(with space in between) to describe the word : "
read keyword

# print some debug messages:
echo "word=.${word}."
echo "meaning=.${meaning}."
echo "keyword=.${keyword}."

# declare arrays as associative
declare -A dict keywords

# assign values to arrays
dict[$word]=$meaning
keywords[$word]=$keyword

# verify array indexes and values
echo "dict index(es) : ${!dict[@]}"
echo "dict value(s) : ${dict[@]}"
echo "keywords index(es): ${!keywords[@]}"
echo "keywords value(s) : ${keywords[@]}"

关于arrays - 关联数组中的错误数组下标错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com