- •Программирование на языке shell
- •При рассмотрении команд в UNIX по сути использовался интерактивный режим взаимодействия с shell,
- •-командный процессор Борна – sh (более старый);
- •Любая хранимая в файле команда или последовательность команд системы UNIX
- •1. Этот метод основан на переадресации ввода не с терминала, а с файла.
- •Здесь уже можно передавать аргументы, если Вы их предусмотрели.
- •shell переменные
- •Присваивание значений переменным
- •Если необходимо присвоить переменной значение, содержащее пробелы, знаки табуляции и символы новой строки,
- •то будет выдано сообщение об ошибке
- •Вновь создаваемые переменные локальны, то есть, эффективны только в пределах текущего экземпляра shell.
- •Использование переменных
- •Если имя переменной заключить в фигурные скобки, то её выведенное значение будет сопровождаться
- •Интерпретатор shell автоматически
- •Эти переменные равнозначны переменным, создаваемым пользователем.
- •Использование shell-переменных в интерактивном режиме
- •После этого мы можем:
- •Строки поиска пути
- •В строке поиска пути каталоги разделены
- •Например,
- •Отмена специального смысла символа
- •3) Путем заключения всех символов последовательности в двойные кавычки.
- •Одинарные кавычки ‘’ указывают
- •Пример:
- •Апостроф ` наклонная одинарная кавычка (расположена на клавише, что и
- •Результат может быть такой: /bin/cat
- •Для отмены специального смысла одного символа - надо применить
- •Команда set
- •Команда set имеет несколько опций, но Мы рассмотрим только одну:
- •Доступ к отдельным аргументам
- •Выход команды date становится последовательностью аргументов для команды set и поэтому на экране
- •После выполнения команды set `date` её результат будет присвоен последовательности параметров
- •Доступ к другим позиционным параметрам с номерами, больше девяти,
- •Путем ввода следующей команды можно получить доступ ко всем позиционным параметрам вызова:
- •Простые условные операторы
- •Команда [ ] является другим именем
- •Команда test может использоваться для трех объектов:
- •Опции имеют вид:
- •B.Сравнение числовых величин
- •C. Сравнение цепочек символов
- •Если цепочка символов заключена в
- •Пример:
- •II.Команды true и false
- •Команды && и II позволяют контролировать выполнение.
- •if if_list then then_list fi
- •Здесь elif выполняется, если if_list не равен нулю, и состоит в следующем:
- •Ветвление по нескольким направлениям case
- •Команда case сравнивает шаблон string с каждым шаблоном s1,s2... sn.
- •Одному списку команд может соответствовать несколько текстовых образцов, разделенных вертикальной
- •Построение циклов
- •Пример.
- •Например, необходимо инвертировать порядок списка аргументов.
- •Кроме аргументов командной строки и позиционных параметров, могут обрабатываться файлы, используя знаки подстановки:
- •Пустая строка
- •Данный пример показывает, что shell будет обрабатывать это, так как двоеточие
- •Прерывание цикла break
- •Если переменная level отсутствует или равна 1, то прерывается цикл 1.
- •while true
- •Если переменная level имеет значение 2, то выполнение будет продолжено с оператора цикла
- •Фоновое выполнение цикла
- •Выход из программы exit
- •Переназначение ввода/вывода и циклы
- •Здесь все выходные данные всех команд в цикле направляются в единый файл (стандартный
- •Можно связать циклы и конвейеры:
- •b)for file in * do
- •Подстановка результатов выполнения команд
- •Пример 3.
- •Вычисление выражений expr
- •При этом могут быть использованы
- •Примеры:
- •2. Сравнение цепочки символов
- •Примеры несовпадения цепочек:
- •Такое сопоставление можно выполнить и с использованием переменных
- •Другой возможностью команды expr является ее способность выделить только часть цепочки символов с
- •Условная замена переменных При условной замене значение одной
- •При отсутствии аргумента справа от знака ?
- •Примеры.
- •Усложненное присваивание переменным
- •Пример 3.
- •Пример 4. Значение, присваемое переменной, может быть значением другой переменной.
- •Для приписывания дополнительных
- •Позиционные параметры
- •shell использует 10 позиционных параметров и несколько специальных
- •Для этой цели применяется цикл и команда shift, чтобы перенести позиционные параметры влево,
- •Присваивание значений позиционным параметрам
- •Пример:
- •Дополнительные переменные командной строки.
- •Отладка shell-программ
- •Например, для отладки shell-процедуры filez надо ввести:
Строки поиска пути
Как и в Dos, в UNIX-shell есть shell- переменная PATH, по которой рассматриваются пути поиска файлов.
Обычно в нем находятся:
-каталог /bin
-каталог /ust/bin
-текущий каталог.
21
В строке поиска пути каталоги разделены
двоеточиями, а для указания текущего каталога служит пустое имя.
Это пустое имя может быть задано или
двумя следующими подряд двоеточиями или одним двоеточием в начале строки.
Необходимо отметить, что порядок поиска зависит от того, как каталоги расположены в строке поиска пути.
Так как строка поиска пути - это shell- переменная, то она может быть задана в интерактивном режиме.
22
Например,
PATH = :/usr/bin:/bin:usr/mi/bin
Чтобы строки поиска пути
инициализировались при запуске shell, необходимо чтобы в Вашем начальном каталоге располагался файл по имени
".profile" с этими строками.
23
Отмена специального смысла символа
Существует три метода отмены специального смысла символа:
1)Путем вставки обратной косой черты (\) перед символом;
2)Путем заключения всех символов
последовательности в одинарные кавычки (‘).
При этом теряют специальный
смысл три знака: |
|
- знак $ (доллара); |
|
- знак ’ (кавычки); |
|
- знак ” (двойных кавычек). |
24 |
3) Путем заключения всех символов последовательности в двойные кавычки.
При этом не теряют специальный смысл четыре знака:
-знак \ (обратная косая черта);
-знак ` (знака ударения/апострофа);
-знак ' (кавычки);
-знак $ (доллара).
25
Одинарные кавычки ‘’ указывают
командному интерпретатору сохранить и не интерпретировать текст внутри них (то есть
спрятать любые спец символы от командного процессора).
Двойные кавычки “” используются, чтобы сгруппировать вместе слова для
формирования параметра или предложения. Но в них возможна интерпретация переменных.
26
Пример:
Term=ansi
a)echo ‘Output $Term’
b)echo “Output $Term”
В первом случае будет выведено Output $Term
а во втором Output ansi
27
Апостроф ` наклонная одинарная кавычка (расположена на клавише, что и
тильда ~) применяется для замещения команды:
а) выполнить команду и сохранить результаты в переменной;
б) выполнить команду и передать ее выходные данные другой команде.
Примеры:
А) echo `ls /bin/c*`
Командный процессор видит апострофы и выполняет команду ls, а затем помещает полученную информацию в команду echo28.
Результат может быть такой: /bin/cat
/bin/cc
/bin/chmod
/bin/csh
Б) PWD=`pwd`
Сохранение имени текущего каталога в переменной PWD. Поэтому при применении команды echo $PWD , будет выведено имя каталога, где вы сейчас находитесь. Часто
применятся следующий прием: |
29 |
pwd PWD=`pwd` echo $PWD cd /tmp pwd
………
sd $PWD pwd
30