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

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

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

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

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

Из книги Волшебный котел автора Реймонд Эрик Стивен

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


Ссылки

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

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


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

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

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


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

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

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


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

Из книги Справочник по PHP автора

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


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

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

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


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


Ссылки

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

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