Shell — имя языка программирования и название командного интерпретатора. Язык программирования shell содержит стандартные конструкции для циклов, ветвления, объявления функций и т. п., он часто используется в UNIX-подобных системах при создании различных сценариев (скриптов) работы, в частности, сценариев автоматического конфигурирования исходных кодов программ перед их компиляцией.

Конспект лекций Диордица А.А.
Оригинальный текст В.А. Галатенко

Shell как интерактивный командный интерпретатор, способен храненить и использовать историю сеанса, редактировать командную строку.

Переменные обозначаются именами. Все значения в языке shell имеют текстовый тип. Значения могут присваиваться переменным при помощи знака равенства.

Тему "Служебные переменные языка shell и аргументы shell-процедур" изучим на примере.

Прежде чем команда начнет выполняться, в каждом составляющем ее поле осуществляется поиск символов *, ?, и [. Поле с любым из этих символов рассматривается как шаблон имен файлов и заменяется именами файлов, удовлетворяющими данному шаблону. Символ . в начале имени файла и символ / , должны быть заданы в шаблоне явно.

Если в командной строке встретилась цепочка символов, заключенная в обратные кавычки ( ` ), она интерпретируется как команда, стандартный вывод которой подставляется вместо упомянутой конструкции. Говорят, что в этом случае производится подстановка результатов выполнения команды, а сами обратные кавычки называют символами подстановки.

Если условие истинно, выполняется один набор команд, в противном случае — альтернативный набор команд.

Оператор выбора case позволяет выполнить одну из нескольких групп команд, в соответствии с заданным ключом.

Оператор цикла for позволяет выполнить несколько команд (тело цикла) многократно.

Оператор цикла while позволяет выполнять тело цикла многократно до тех пор пока истинно условие.

Оператор цикла until позволяет выполнять тело цикла многократно до тех пор пока условие ложно.

Команда test используется в управляющих конструкциях if, while и until, она проверяет некоторое условие и вырабатывает нулевой или ненулевой код завершения в зависимости от того, оказалось ли условие, соответственно, истинным или ложным.

Функция с фигурными скобками выполняется в рамках текущего процесса.

Для функции с круглыми скобками () порождается отдельный процесс.

Конвейер - последовательность команд, разделенных знаком | . Стандартный вывод всех команд, кроме последней, направляется на стандартный ввод следующей команды конвейера.

Командный интерпретатор shell ассоциирует с каждым открытым файлом так называемый дескриптор. Дескрипторы нумеруются десятичными целыми числами, начиная с нуля.

Под экранированием имеется в виду защита символов от интерпретации со стороны языка shell. Следующие символы shell трактует по-особому; не будучи экранированными, они завершают предшествующее им слово:

Встроенные команды, в отличие от утилит, выполняет сам shell.

Вызов командного интерпретатора shell осуществляется командой sh.

Разработчики служебных программ должны руководствоваться следующими правилами.