Чтобы отключить опцию set, просто замените знак — на знак +. Конечно, привычнее было бы, наоборот, знак + применять для подключения, а знак — использовать для отключения. Но здесь все зависит от привычки.
Команду set можно запустить, начиная с верхней части сценария, и завершить ее выполнение по завершении сценария. Или же можно активизировать эту команду при выполнении определенной блочной конструкции, которая содержит ошибки.
Рассмотрим, как функционирует команда set. Ниже приводится небольшой сценарий, который включает в список переменных определенные имена. Пользователь вводит имя, затем с помощью цикла for просматривается список в поисках соответствия. Обратите внимание, что опция set -x применяется в верхней части сценария, а в нижней части сценария ее действие завершается.
$ pg error
#!/bin/sh
#error
#установка set -x set -x
LIST="Peter Susan John Barry Lucy Norman Bill Leslie"
echo -n "Enter your Name :"
read NAME
for LOOP in $LIST
do
if [ "$LOOP" = "$NAME" ]; then
echo "you're on the list, you're in"
break
fi
done
# отмена установки
set -x
set +x
Выполним сценарий, используя имя, которое отсутствует в списке. При этом поток вывода выглядит следующим образом.
$ error
error
+ error
+ LIST=Peter Susan John Barry Lucy Norman Bill Leslie
+ echo -n Enter your Name :
Enter your Name :+ read NAME
Harry
- [ Peter=Harry ]
+ [ Susan=Harry ]
+ [ John=Harry ]
+ [ Barry=Harry ]
+ [ Lucy=Harry ]
- [ Norman=Harry ]
+ [ Bill=Harry ]
+ [ Leslie=Harry ]
По мере того как цикл for обрабатывает список, полностью отображаются результаты сравнения. Нежелательно применять команду set аналогичным образом, если возникают затруднения при просмотре файлов или на этапе сравнения строк и значений.
23.3. Заключение
При поиске ошибок нужно самостоятельно просматривать сценарии и применять
команду set наряду с набором конструкций echo. ,
Встроенные команды интерпретатора shell
В предыдущих главах нам уже встречались конструкции, встроенные в интерпретатор shell Напомним, что речь идет о командах, которые не находятся в каталоге /bin или usr/bin, а встроены в интерпретатор Bourne shell. Скорость выполнения встроенных команд выше по сравнению с их эквивалентами в системе (если таковые имеются), В этой главе рассматривается единственная тема: список стандартных встроенных команд интерпретатора Bourne shell.
Например, для выполнения одних и тех же действий можно воспользоваться как системными командами cd и pwd, так и аналогичными командами, встроенными в интерпретатор shell. Чтобы выполнять системную версию команды, кроме ее имени укажите и каталог, в котором она находится:
/bin/pwd
24.1. Полный список команд, встроенных в интерпретатор shell
В табл. 24.1 содержится полный перечень стандартных встроенных команд. Таблица 24.1. Стандартные встроенные команды