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




Программирование на языке сценариев командной оболочки - стр. 292


Даже те пользователи, которые работают в другой, не UNIX-подобной операционной системе, смогут запускать сценарии командной оболочки, а потому -- найти для себя много полезного в этой книге. Пакеты Cygwin от Cygnus, и MKS utilities от Mortice Kern Associates, позволяют дополнить Windows возможностями командной оболочки.

Глава 34. Bash, версия 2

Текущая версия Bash, та, которая скорее всего установлена в вашей системе, фактически -- 2.XX.Y.

bash$ echo $BASH_VERSION

2.05.8(1)-release

В этой версии классического языка сценариев Bash были добавлены переменные-массивы, [64] расширение строк и подстановка параметров, улучшен метод косвенных ссылок на переменные.

Пример 34-1. Расширение строк

#!/bin/bash

# "Расширение" строк (String expansion). # Введено в Bash, начиная с версии 2.

# Строки вида $'xxx' # могут содержать дополнительные экранированные символы.

echo $'Звонок звенит 3 раза \a \a \a' echo $'Три перевода формата \f \f \f' echo $'10 новых строк \n\n\n\n\n\n\n\n\n\n'

exit 0

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

#!/bin/bash

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

a=letter_of_alphabet letter_of_alphabet=z

echo "a = $a" # Прямая ссылка.

echo "Now a = ${!a}" # Косвенная ссылка. # Форма записи ${!variable} намного удобнее старой "eval var1=\$$var2"

echo

t=table_cell_3 table_cell_3=24 echo "t = ${!t}" # t = 24 table_cell_3=387 echo "Значение переменной t изменилось на ${!t}" # 387

# Теперь их можно использовать для ссылок на элементы массива, # или для эмуляции многомерных массивов. # Было бы здорово, если бы косвенные ссылки допускали индексацию.

exit 0

Пример 34-3. Простая база данных, с применением косвенных ссылок

#!/bin/bash # resistor-inventory.sh # Простая база данных, с применением косвенных ссылок.

# ============================================================== # # Данные

B1723_value=470 # сопротивление (Ом) B1723_powerdissip=.25 # рассеиваемая мощность (Вт) B1723_colorcode="желтый-фиолетовый-коричневый" # цветовая маркировка B1723_loc=173 # где B1723_inventory=78 # количество (шт)




Содержание  Назад  Вперед