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




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


Использование неэкранированных или неокавыченных пробелов внутри фигурных скобок недопустимо.

echo {file1,file2}\ :{\ A," B",' C'}

file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

{}

Блок кода. [фигурные скобки] Известен так же как "вложенный блок", эта конструкция, фактически, создает анонимную функцию. Однако, в отличии от обычных функций, переменные, создаваемые во вложенных блоках кода, доступны объемлющему сценарию.

bash$ { local a; a=123; }

bash: local: can only be used in a function

a=123 { a=321; } echo "a = $a" # a = 321 (значение, присвоенное во вложенном блоке кода)

# Спасибо, S.C.

Код, заключенный в фигурные скобки, может выполнять перенаправление ввода-вывода.

Пример 3-1. Вложенные блоки и перенаправление ввода-вывода

#!/bin/bash # Чтение строк из файла /etc/fstab.

File=/etc/fstab

{ read line1 read line2 } < $File

echo "Первая строка в $File :" echo "$line1" echo echo "Вторая строка в $File :" echo "$line2"

exit 0

Пример 3-2. Сохранение результата исполнения вложенного блока в файл

#!/bin/bash # rpm-check.sh

# Запрашивает описание rpm-архива, список файлов, и проверяется возможность установки. # Результат сохраняется в файле. # # Этот сценарий иллюстрирует порядок работы со вложенными блоками кода.

SUCCESS=0 E_NOARGS=65

if [ -z "$1" ] then echo "Порядок использования: `basename $0` rpm-file" exit $E_NOARGS fi

{ echo echo "Описание архива:" rpm -qpi $1 # Запрос описания. echo echo "Список файлов:" rpm -qpl $1 # Запрос списка. echo rpm -i --test $1 # Проверка возможности установки. if [ "$?" -eq $SUCCESS ] then echo "$1 может быть установлен." else echo "$1 -- установка невозможна!" fi echo } > "$1.test" # Перенаправление вывода в файл.

echo "Результаты проверки rpm-архива находятся в файле $1.test"

# За дополнительной информацией по ключам команды rpm см.


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