Когда Shell обнаруживает конец файла в процедуре, она завершается, возвращая в свой родительский процесс код завершения последней команды, выполненной до обнаружения конца файла. Выход из Shell самого высокого уровня производится нажатием клавиши Ctrl-d (при этом пользователь выгружается из системы).
Команда exit моделирует конец файла, устанавливая код завершения равным значению своего аргумента, если он имеется. Так, процедуру можно нормально завершить, указав в конце файла "exit 0".
Группирование команд: скобки () и []
В интерпретаторе Shell имеется два способа группирования команд - с помощью обычных и прямоугольных скобок. Обычные скобки приказывают Shell создать подоболочку, которая считывает заключенные в скобки команды. Правая и левая скобки распознаются в любом месте командной строки. В качестве литералов они интерпретируются только в случае, если заключены в кавычки. Например, если вы введете:
garble(stuff)
то Shell выдаст сообщение об ошибке. Строки с кавычками типа:
garble"("stuff")"
"garble(stuff)"
интерпретируются правильно. Правила использования кавычек рассматриваются в разделе "Использование кавычек" данной главы.
Возможность создания подоболочки путем группирования команд полезна при выполнении операций, которые не должны влиять на значения переменных в текущей оболочке или когда временно меняется рабочий каталог и команды выполняются в новом каталоге без возврата в текущий.
Параметры рабочей среды передаются в подоболочку вместе с переменными, которые были экспортированы в текущую оболочку Shell.
дают один и тот же результат: файл /usr/docs/otherdir/doc.n обрабатывается nroff и вывод сохраняется в файле /usr/docs/otherdir/doc.out. (Следует заметить, что команда nroff обрабатывает текстовую информацию.) Во втором примере возврат в начальный рабочий каталог происходит автоматически. Пробелы и символы новой строки вокруг скобок допустимы, но не обязательны. При вводе командной строки с терминала Shell высветит символ приглашения в виде значения переменной PS2, в случае, если требуется закрытие скобок.
Фигурные скобки { и } могут также применяться для группирования команд. Обе эти скобки распознаются только если они находятся на месте первого (не заключенного в кавычки) слова команды. После открывающей фигурной скобки может следовать символ новой строки - в этом случае Shell выдаст приглашение для ввода дополнительной информации. В отличие от обычных скобок, для фигурных скобок не создается никаких подоболочек - заключенные в них команды просто считываются интерпретатором Shell. Фигурные скобки удобны в случае, когда вы хотите использовать (последовательный) вывод от нескольких команд в качестве ввода для одной команды
Код завершения группы команд, заключенных в скобки, равен коду завершения последней выполненной команды из этой группы.