Сценарий оболочки :Выберите одну конкретную глобальную переменную с помощью клавиши

Спустя годы я наткнулся наthis keyboard in a vintage computing museum

Обратите внимание на клавиши Meta слева и справа от клавиатуры! Наряду с множеством других полезных клавиш. Интересно, что делает Rub Out...

0
07.09.2020, 08:23
2 ответа

Спасибо steeldriver за указание пути вперед Variables -Union . Я использовал nameref, и это сработало для меня. Выполнение следующего изменения сделало свое дело.

-VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL
+declare -n VALID_CATAGORY_ANIMAL=VALID_${CATAGORY}_ANIMAL
1
18.03.2021, 23:07

Это может прояснить ситуацию. Эта переменная содержит имя другой переменной. Чтобы получить его значение, оболочка должна сначала раскрыть имя переменной, а затем значение переменной.

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
0
18.03.2021, 23:07

Теги

Похожие вопросы