- •4. Основы программирования на командном языке (sh)
- •4.1. Переменные Shell
- •4.2. Присваивание значений переменным
- •4.3. Вывод содержимого переменных
- •4.4. Специальные символы
- •4.4.1. Кавычки
- •4.4.2. Двойные кавычки
- •4.7. Построим простейшую Shell-процедуру (командный файл)
- •4.8. Специальные параметры интерпретатора команд
- •4.9. Простые условные операторы
- •4.9.1. And-if (&&) – Условное и
- •4.9.2. Or-if (||) – Условное или
- •4.10. Команда test
- •4.10.1. Cравнение строк
- •4.10.2. Cравнение чисел
- •4.10.3. Проверка состояния файла
- •4.10.4. Использование команды test в операторе if
- •4.11. Управляющие конструкции высокого уровня
- •4.11.1. Условный оператор (if)
- •4.12. Операторы цикла (for и while)
- •4.12.1. Оператор цикла for
- •Пример_1: Процедура print1 печатает (выводит в стандартный вывод) три файла, перечисленные в списке значений цикла for.
- •4.12.2. Оператор цикла while
- •4.13. Оператор выбора case
- •4.14. Арифметические операции с переменными Shell
- •4.15 Стандартные переменные Shell
- •4.16 Экспортирование переменных
- •4.17 Встроенные команды интерпретатора sh
- •4.18. Системные файлы
- •4.19. Запуск и режимы работы sh
4. Основы программирования на командном языке (sh)
Версии Shell. ПеременныеShell. Присваивание значений переменным. Вывод содержимого переменных. Подстановка значений переменных. Использование переменныхShell. Специальные символы (кавычки, двойные кавычки, апострофы, обратные апострофы). АргументыShell-программы. Специальные параметры интерпретатора команд. Простые условные операторы (условное ИЛИ, условное И). Командаtest(сравнение строк, сравнение чисел, проверка состояния файла). Использование командыtestв оператореif. Управляющие конструкции высокого уровня (условный оператор (if), операторы цикла (forиwhile)). Операторыbreakиcontinue. Оператор выбораcase. Арифметические операции с переменнымиShell. Стандартные переменныеShell. Экспортирование переменных. Встроенные команды интерпретатораsh. Системные файлы. Запуск и режимы работыsh.
В любой операционной системе существует командная оболочка (интерпретатор команд), которая анализирует введенные команды и их аргументы, проверяет синтаксис, допустимость тех или иных ключей и т.д. и запускает соответствующую программу, т.е. создает в Unix процесс и передает ему управление.
Таким командным языком интерпретатором в Unix является Shell.
Помимо исполнения команд Shell выполняет и другие важные работы:
исполнение программ;
генерация имен файлов;
переназначение ввода и вывода;
конвейеризация;
контроль среды окружения;
интерпретация и выполнение командных процедур.
Версии Shell
Имеются 4 основных варианта Shell:
Bourne Shell (sh);
C-Shell (csh);
Korn Shell (ksh);
Bourne Again Shell (bash).
Bourne Shell - это оригинальный Unix Shell, присутствующий во всех Unix реализациях.
C-Shell был спроектирован и реализован в Калифорнийском университете в Беркли. Основной задачей разработчиков было повышение уровня интерактивности командного языка. К сожалению, был затронут синтаксис некоторых конструкций языка и потеряна совместимость с языком sh.
4.1. Переменные Shell
Имена переменных должны начинаться с буквы или символа подчеркивания:
k7
output_file
_ufile
4.2. Присваивание значений переменным
var=length
Контекстно определена (объявленная) переменная var и ей присвоено значение length.
Самой переменной length можно, в свою очередь, присвоить значение:
length=80
Примечание. Посмотреть определенные переменные и их значения можно так:
использовать встроенную команду интерпретатора командного языка echo:
%echo $var # вывести значение переменной var
# - обратите внимание на
# символ $ перед именем переменной,
# он означает "Взять значение"
length # значение переменной var
%echo $length # вывести значение переменной length
80 # значение переменной length
В отличие от множества существующих языков программирования переменные Shell не связаны с определенным типом данных.
Любое значение, которое присваивается переменным Shell, воспринимается как строка.
Если переменной присваивают значение строки символов, то предпочтительно, чтобы эта строка была заключена в кавычки. Если в строке символов встречаются пробелы, то кавычки обязательны.
message="This is a string"