如何基于test.tmp文件创建关联数组?现有Shell代码无法运行
问题分析与解决
你的代码存在反引号配对错误,导致语法解析失败。另外,每次循环调用两次awk效率较低,我们可以直接通过read命令拆分每行的键和值,简化逻辑同时提升效率。
修正后的关联数组创建代码
declare -A index while read -r key value; do index["$key"]="$value" done < test.tmp
数组检查代码(可直接使用)
for i in "${!index[@]}"; do echo "index $i: ${index[$i]}" done
关键说明
read -r key value:直接将每行的第一个字段赋值给key,第二个字段赋值给value,无需额外调用外部工具,逻辑更简洁高效。- 变量引用时添加双引号
"$key"和"$value",可以避免键或值包含空格、特殊字符时出现解析错误。 - 原代码的反引号错误:
index[echo $line | awk '{print $1}']缺少闭合的反引号,即便修正后,这种写法也远不如read`拆分的方式实用。
内容的提问来源于stack exchange,提问作者Tilei Liu
相关产品推荐
相关产品推荐

