#arrays #bash #variables
#массивы #bash #переменные
Вопрос:
Я пытаюсь создать простой способ инициализации группы переменных.
Идея заключалась в том, чтобы создать массив и добавить переменные в массив, затем перебрать их и инициализировать.
Проблема в том, что я не могу понять, как изменить значение переменной в массиве. Я знаю, как изменить FruitsArray[3]
значение на равное чему-то другому, но если переменная $Apple
находится в массиве, и я хочу изменить ее с «безопасной» на «отравленную», я, похоже, не могу понять это.
Конечно, может быть более простой способ инициализации группы переменных, но, похоже, я должен знать, как это сделать, и я упускаю что-то очевидное.
Комментарии:
1.
FruitsArray[$Apple]=poisoned
2. Что вы подразумеваете под «переменной
$Apple
в массиве». Массив не содержит других переменных.3.
$Apple
будет значением переменнойApple
, которая находится в массиве. Вам просто нужно изменить значение в соответствующем индексе.
Ответ №1:
Если я вас правильно понял, у вас есть это:
FruitsArray[0]="Apricot"
FruitsArray[1]="Avocado"
FruitsArray[2]="Banana"
FruitsArray[3]="Apple"
И, кроме того:
Apple="safe"
И вы хотите изменить значение Apple, на которое указывает FruitsArray[3] .
Обращение к такому значению называется косвенным:
index="${FruitsArray[3]}"
echo "variable and value ${FruitsArray[3]}=${!index}"
И изменяется с помощью:
declare ${FruitsArray[3]}="poisoned"
Весь скрипт:
#!/bin/bash
FruitsArray[0]="Apricot"
FruitsArray[1]="Avocado"
FruitsArray[2]="Banana"
FruitsArray[3]="Apple"
Apple="safe"
index="${FruitsArray[3]}"
echo "from ${FruitsArray[3]}=${!index}"
declare ${FruitsArray[3]}="poisoned"
echo "to ${FruitsArray[3]}=${!index}"
При исполнении:
from Apple=safe
to Apple=poisoned