Книга: Linux-сервер своими руками
19.7.3. Подоболочки
19.7.3. Подоболочки
При написании сценариев вы можете использовать механизм подоболо-чек. Если вы знакомы с каким-нибудь языком программирования, то должны знать об области распространения действия переменных. Существуют глобальные и локальные переменные. Первые действуют во всей программе, а вторые только внутри определенного блока, например, функции. Если в локальной функции определена переменная с таким же именем, что и одна из глобальных переменных, в этом локальном блоке будет использоваться значение локальной переменной. Далее приведен простейший пример программы, использующей локальные и глобальные переменные на языке Pascal:
Program Test;
Var A : integer; {глобальная переменная}
procedure GetLocal ;
var A: integer; {локальная переменная)
begin
А:= 10;
writeln(A);
end;
begin
А:=7;
writeln(A);
GetLocal(A);
writeln(A);
end;
При запуске программа выведет на экран:
7
10
7
В bash наблюдается нечто подобное. Этот блок называется подоболочкой. Если список команд заключен в фигурные скобки, то он выполняется в текущей оболочке, а если в обыкновенные, то в подоболочке. Итак, рассмотрим выполнение почти аналогичных сценариев:
#!/bin/bash
# Сценарий 1
NUM="one"; (NUM="two"; echo $NUM;);
echo $NUM
#!/bin/bash
# Сценарий 2
NUM="one"; {NUM="two"; echo $NUM;};
echo $NUM
Сценарий 1 выведет на экран следующую информацию:
two
one
а сценарий 2:
two
two
С помощью механизма подоболочек вы можете создавать более гибкие сценарии. С его помощью, например, можно временно изменять рабочий каталог:
pwd; (cd /tmp; pwd;); pwd
Сценарий выведет на экран:
/home/user
/tmp
/home/user
- Глава 19. Подоболочки, или Subshells
- Пример 19-2. Личные настройки пользователей
- Приложение D. Подробное введение в операции ввода-вывода и перенаправление ввода-вывода
- 8.2.10. Учебный пример: утилиты bc и dc
- Часть 4. Материал повышенной сложности
- Глава 26. Файлы
- Пример 19-1. Область видимости переменных
- Пример 19-3. Запуск нескольких процессов в подоболочках
- Пример 31-1. Западня в подоболочке
- 19.7.7. Подстановка переменных