Книга: Искусство программирования на языке сценариев командной оболочки
Пример 9-21. Косвенные ссылки
Пример 9-21. Косвенные ссылки
#!/bin/bash
# Косвенные ссылки на переменные.
a=letter_of_alphabet
letter_of_alphabet=z
echo
# Прямое обращение к переменной.
echo "a = $a"
# Косвенное обращение к переменной.
eval a=$$a
echo "А теперь a = $a"
echo
# Теперь попробуем изменить переменную, на которую делается ссылка.
t=table_cell_3
table_cell_3=24
echo ""table_cell_3" = $table_cell_3"
echo -n "разыменование (получение ссылки) "t" = "; eval echo $$t
# В данном, простом, случае,
# eval t=$$t; echo ""t" = $t"
# дает тот же результат (почему?).
echo
t=table_cell_3
NEW_VAL=387
table_cell_3=$NEW_VAL
echo "Значение переменной "table_cell_3" изменено на $NEW_VAL."
echo "Теперь "table_cell_3" = $table_cell_3"
echo -n "разыменование (получение ссылки) "t" = "; eval echo $$t
# инструкция "eval" принимает два аргумента "echo" и "$$t" (назначает равным $table_cell_3)
echo
# (Спасибо S.C. за разъяснения.)
# Еще один способ -- нотация ${!t}, будет обсуждаться в разделе "Bash, версия 2".
# Так же, см. пример "ex78.sh".
exit 0
- 5.1.3. Прямые ссылки
- Пример 9-22. Передача косвенных ссылок в awk
- Косвенные мотивы
- Пример 25-1. Простой массив
- 9.5. Косвенные ссылки на переменные
- Пример 10-27. Простой пример сравнения строк
- Пример 25-7. Вложенные массивы и косвенные ссылки
- Пример 34-1. Расширение строк
- Пример 34-2. Косвенные ссылки на переменные -- новый метод
- Пример 34-3. Простая база данных, с применением косвенных ссылок
- Пример установочного скрипта
- Пример из практики