Пример 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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Символические ссылки. Жесткие ссылки.

Из книги автора

Символические ссылки. Жесткие ссылки. Немного теорииВ системах Unix довольно часто возникает необходимость иметь для одного и того же файла или каталога разные имена. При этом одно из имен логично назвать основным, а все другие - его псевдонимами. В терминологии Unix такие


8.6.4 Прямые и косвенные назначения

Из книги автора

8.6.4 Прямые и косвенные назначения Отметим, что один элемент таблицы указывает на прямой (direct) тип локальной сети 128.36.0, что означает непосредственное подключение этой сети к маршрутизатору. Протокол является локальным (local), когда маршрут можно изучить, просмотрев


8.7.3 Прямые и косвенные точки назначения

Из книги автора

8.7.3 Прямые и косвенные точки назначения Три следующие строки имеют прямой тип для точки назначения, что означает подсети, подключенные непосредственно к этому маршрутизатору. Их протоколы локальны, и маршрутизатор может исследовать эти подсети через конфигурационную


Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя

Из книги автора

Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя #!/bin/bash# timeout.sh# Автор: Stephane Chazelas,# дополнен автором документа.INTERVAL=5 # предел времени ожиданияtimedout_read() { timeout=$1 varname=$2 old_tty_settings=`stty -g` stty -icanon min 0 time ${timeout}0 eval read $varname # или просто read $varname


9.5. Косвенные ссылки на переменные

Из книги автора

9.5. Косвенные ссылки на переменные Предположим, что значение одной переменной -- есть имя второй переменной. Возможно ли получить значение второй переменной через обращение к первой? Например, Пусть a=letter_of_alphabet и letter_of_alphabet=z, тогда вопрос будет звучать так: "Возможно ли


Пример 10-27. Простой пример сравнения строк

Из книги автора

Пример 10-27. Простой пример сравнения строк #!/bin/bash# match-string.sh: простое сравнение строкmatch_string (){ MATCH=0 NOMATCH=90 PARAMS=2 # Функция требует два входных аргумента. BAD_PARAMS=91 [ $# -eq $PARAMS ] || return $BAD_PARAMS case "$1" in "$2") return $MATCH;; * ) return $NOMATCH;; esac}a=oneb=twoc=threed=twomatch_string $a # неверное число


Пример 12-20. Пример форматирования списка файлов в каталоге

Из книги автора

Пример 12-20. Пример форматирования списка файлов в каталоге #!/bin/bash# За основу сценария взят пример "man column".(printf "PERMISSIONS LINKS OWNER GROUP SIZE DATE TIME PROG-NAME " ; ls -l | sed 1d) | column -t# Команда "sed 1d" удаляет первую строку, выводимую командой ls,#+ (для локали "С" это строка: "total N",#+ где "N" -- общее


Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"

Из книги автора

Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков" #!/bin/bashARGS=1 # Ожидаемое число аргументов.E_BADARGS=65 # Код завершения, если число аргументов меньше ожидаемого.test $# -ne $ARGS && echo "Порядок использования: `basename $0` $ARGS аргумент(а)(ов)" && exit $E_BADARGS# Если


Пример 25-8. Пример реализации алгоритма Решето Эратосфена

Из книги автора

Пример 25-8. Пример реализации алгоритма Решето Эратосфена #!/bin/bash# sieve.sh# Решето Эратосфена# Очень старый алгоритм поиска простых чисел.# Этот сценарий выполняется во много раз медленнее# чем аналогичная программа на C.LOWER_LIMIT=1 # Начиная с 1.UPPER_LIMIT=1000 # До 1000.# (Вы можете


Пример 34-2. Косвенные ссылки на переменные -- новый метод

Из книги автора

Пример 34-2. Косвенные ссылки на переменные -- новый метод #!/bin/bash# Косвенные ссылки на переменные.a=letter_of_alphabetletter_of_alphabet=zecho "a = $a" # Прямая ссылка.echo "Now a = ${!a}" # Косвенная ссылка.# Форма записи ${!variable} намного удобнее старой "eval var1=$$var2"echot=table_cell_3table_cell_3=24echo "t = ${!t}" # t =


9. Косвенные модели получения продажной стоимости

Из книги автора

9. Косвенные модели получения продажной стоимости Однако, есть способы образования рынков, связанных с услугами в области программного обеспечения, которые представляют собой нечто, подобное получению косвенным образом продажной цены. Есть пять существующих и две


Ссылки

Из книги автора

Ссылки Эту книгу можно найти в бумажном виде и в других электронных форматах на сайте www.copyrightreform.eu.Читайте блог Кристиана Энгстрома: christianengstrom.wordpress.com и Рика Фальквинга:


Ссылки

Из книги автора

Ссылки Чаще всего нам необходимы объекты с полями, представляющими другие объекты. Например, книга имеет автора, который представлен экземпляром класса WRITER. Можно ввести понятие подобъекта. В новой версии класса BOOK2 его экземпляры содержат поле, являющееся объектом -


Косвенные списки САС

Из книги автора

Косвенные списки САС В версии 2000 года стандарта X.509 [78] появилась концепция косвенных дельта-списков. Подобно дельта-спискам, косвенные списки содержат сведения об изменениях ранее опубликованной информации об аннулировании сертификатов. Однако косвенные дельта-списки