bash 关联数组的基本错误值非常大

pun*_*eet 5 bash associative-array

我有一个名为 a.txt 的文件,如下所示

7A1123123asd 14
8aasdasdasd 15
Run Code Online (Sandbox Code Playgroud)

现在我编写了一些 bash 代码来读取该文件并根据其中的值构建一个关联数组

#!/bin/bash
declare -a counter
while read DEAL count; do
    counter["$DEAL"]=$count
done < oasload.job

for i in "${!array[@]}"
do
    echo "key : $i"
    echo "value : ${array[$i]}"
done
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我运行时出现以下错误

test.sh: line 6: 7A1123123asd: value too great for base (error token is "7A1123123asd")
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

Eri*_*rik 7

看起来 bash 将以数字开头的键视为数字。因此,尝试转换 7A 时它会犹豫,因为 A 不是有效的 10 进制数字。例如,如果您可以在所有键上加上 X 前缀,那么这应该可以修复它。

#!/bin/bash
declare -a counter
while read DEAL count; do
    counter["X$DEAL"]=$count
done < oasload.job

for i in "${!array[@]}"
do
    echo "key : $i"
    echo "value : ${array[$i]}"
done
Run Code Online (Sandbox Code Playgroud)