$ 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. ,
ГЛАВА 24
Встроенные команды интерпретатора shell
В предыдущих главах нам уже встречались конструкции, встроенные в интерпретатор shell Напомним, что речь идет о командах, которые не находятся в каталоге /bin или usr/bin, а встроены в интерпретатор Bourne shell. Скорость выполнения встроенных команд выше по сравнению с их эквивалентами в системе (если таковые имеются), В этой главе рассматривается единственная тема: список стандартных встроенных команд интерпретатора Bourne shell.
Например, для выполнения одних и тех же действий можно воспользоваться как системными командами cd и pwd, так и аналогичными командами, встроенными в интерпретатор shell. Чтобы выполнять системную версию команды, кроме ее имени укажите и каталог, в котором она находится:
/bin/pwd
24.1. Полный список команд, встроенных в интерпретатор shell
В табл. 24.1 содержится полный перечень стандартных встроенных команд. Таблица 24.1. Стандартные встроенные команды
: |
Нуль, всегда возвращает истинное значение |
. |
Считывание файлов из текущего интерпретатора shell |
break |
Применяется в конструкциях for, while, until, case |
cd |
Изменяет текущий каталог |
continue |
Продолжает цикл, начиная следующую итерацию |
echo |
Записывает вывод в стандартный поток вывода |
eval |
Считывает аргумент и выполняет результирующую команду |
exec |
Выполняет команду, но не в этом интерпретаторе shell |
exit |
Выход из интерпретатора shell |
export |
Экспортирует переменные, вследствие чего они доступны для текущего интерпретатора shell |
pwd |
Отображает текущий каталог |
read |
Просматривает строку текста из стандартного потока |
readonly |
Превращает данную переменную в переменную "только для чтения" |
return |
Выход из функции с отображением кода возврата |
set |
Управляет отображением различных параметров для стандартного потока вводных данных |
shift |
Смещает влево командную строку аргументов |
test |
Оценивает условное выражение |
times |
Отображает имя пользователя и системные промежутки времени для процессов, которые выполняются с помощью интерпретатора shell |
trap |
При получении сигнала выполняет определенную команду |
type |
Интерпретирует, каким образом интерпретатор shell применяет имя в качестве команды |
ulimit |
Отображает или устанавливает ресурсы интерпретатора shell |
umask |
Отображает или устанавливает режимы создания файлов, заданные по умолчанию |
unset |
Удаляет из памяти интерпретатора shell переменную или функцию |
wait |
Ожидает окончания дочернего процесса и сообщает о его завершении |