我正在尝试基于变量创建关联数组。以下是我正在尝试做的超简化版本(ls命令不是我想要的,仅用于说明目的)...
我有一个静态定义的数组(text-a,text-b)。然后,我想遍历该数组,并创建带有这些名称和_AA的关联数组(所以关联数组称为text-a_AA和text-b_AA)。
我真的不需要追加_AA,但我认为它可能是 必须避免重复的名称,因为$ NAME已被使用 在循环中。
我将需要那些定义的,并将在脚本的后续部分引用它们,而不仅仅是在我试图定义它们的下面的for循环中...我想稍后,例如,能够引用text-a_AA [NUM](再次使用text-a_AA部分的变量)。显然我下面的内容不起作用......从我所知道的,我需要使用namerefs?我试图让语法正确,似乎无法弄明白......任何帮助都将不胜感激!
#!/usr/bin/env bash
NAMES=('text-a' 'text-b')
for NAME in "${NAMES[@]}"
do
NAME_AA="${NAME}_AA"
$NAME_AA[NUM]=$(cat $NAME | wc -l)
done
for NAME in "${NAMES[@]}"
do
echo "max: ${$NAME_AA[NUM]}"
done
答案 0 :(得分:0)
您可能想要使用" NUM"作为关键数组的名称和文件名作为键。然后,您可以将代码重写为:
NUM[${NAME}_AA]=$(wc -l < "$NAME")
然后将你的循环改为:
for NAME in "${NAMES[@]}"
do
echo "max: ${NUM[${NAME}_AA]}"
done
检查您的脚本
顺便说一下:所有大写都不是命名普通shell变量的好方法。您可能需要查看: