Обратите внимание на клавиши Meta слева и справа от клавиатуры! Наряду с множеством других полезных клавиш. Интересно, что делает Rub Out...
Спасибо steeldriver за указание пути вперед Variables -Union . Я использовал nameref, и это сработало для меня. Выполнение следующего изменения сделало свое дело.
-VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL
+declare -n VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL
Это может прояснить ситуацию. Эта переменная содержит имя другой переменной. Чтобы получить его значение, оболочка должна сначала раскрыть имя переменной, а затем значение переменной.
for anime in $(eval echo \${$VALID_CATAGORY_ANIMAL[@]}); do
eval
-Он принимает аргументы, расширяет переменные и передает их для выполнения оболочке
Так как мы избежали первого знака доллара, команда пойдет на выполнение в этом:
$(echo ${VALID_ACQUATIC_ANIMAL[@]}
Вы можете вставить следующую строку перед циклом
echo $VALID_CATAGORY_ANIMAL #VALID_ACQUATIC_ANIMAL
echo \${$VALID_CATAGORY_ANIMAL[@]} #${VALID_ACQUATIC_ANIMAL[@]}
eval echo \${$VALID_CATAGORY_ANIMAL[@]} #shark, dolphin