Выбрать главу

$ 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 Ожидает окончания дочернего процесса и сообщает о его завершении