Логические выражения и операторы управления
Лабораторная работа №13
СОЗДАНИЕ И ВЫПОЛНЕНИЕ КОМАНДНЫХ ФАЙЛОВ
В СРЕДЕ ОС UNIX
Цель работы
Целью работы является изучение методов создания и выполнения командных файлов на языке Shell - интерпретатора.
Теоретическая часть
В предыдущих лабораторных работах взаимодействие с командным интерпретатором Shell осуществлялось с помощью командной строки. Однако, Shell является также и языком программирования, который применяется для написания командных файлов (shell - файлов). Командные файлы также называются скриптами и сценариями. Shell - файл содержит одну или несколько выполняемых команд (процедур), а имя файла в этом случае используется как имя команды.
Простой пример shell-файла
Для создания сценариев можно использовать любой текстовый редактор. Создайте новый файл и введите следующие строки.
#!/bin/bash
echo "It is my first shell-file!!!"
# комментарий
ls $HOME
echo "Done!"
Первая строка указывает текущей оболочке, какую программу следует использовать для интерпретации файла. В данном случае это оболочка bash. Это сделано для того, что если сценарий вызывается в пределах другой оболочки или файлового менеджера - они будут "знать", что для выполнения этого сценария требуется оболочка bash.
Вторая строка - это первая команда в сценарии. Команда echo используется для вывода на экран простой информационной строки.
Третья строка - комментарий.
|
|
Далее следуют ещё две команды - команда ls, которая берёт имя каталога в качестве параметра, и, наконец, команда echo, выводящая на экран информацию об успешном выполнении работы.
Переменные командного интерпретатора
Как любой язык программирования, командный язык shell поддерживает переменные. Тип их — строковый. Для обозначения переменных Shell используется последовательность букв, цифр и символов подчеркивания; переменные не могут начинаться с цифры.
Оператор присваивания выглядит так:
$имя_переменной=значение
Имя должно начинаться с буквы и может состоять из латинских букв, цифр, знака подчеркивания. Если значение переменной содержит специальные символы, в имени файла, то при указании его имени в команде этот символ нужно экранировать знаком «\» (обратный слэш) или заключать все имя в двойные кавычки.
Вот ряд символов, которые имеют специальное значение для командного интерпретатора, и их использование не рекомендуется:
~ ! @ # $ & % * ( ) [ ] { } ' " \ : ; > < пробел
Внимание!!! Обратите внимание, что переменные в shell чувствительны к регистру. Например, Myvar и myvar – это имена разных переменных.
Позиционные переменные.
Переменные вида $n, где n - целое число, используются для идентификации позиций элементов в командной строке с помощью номеров, начиная с нуля. Например, в командной строке
|
|
саt text_1 text_2...text_9
аргументы идентифицируются параметрами $1...$9. Для имени команды всегда используется S0. В данном случае $0 - это саt, $1 - text_1, $2 - text_2 и т.д. Для присваивания значений позиционным переменным используется команда set, например:
Set arg_1 arg_2... arg_9
здесь $1 присваивается значение аргумента arg_1, $2 - arg_2 и т.д.
Вывод переменных.
Операция подстановки значения переменной обозначается символом $. Вывести значение переменной можно командой echo:
$ var=”Это моя переменная!”
$ echo var # выводит имя переменной var
$ echo $var # выводит значение переменной “Это моя переменная!”
Ставя перед именем переменной знак $, мы сообщаем интерпретатору, что нужно заменить ее значением. Это называется подстановкой переменной. Но что будет, если мы попробуем сделать так:
$echo foo$var #программа выведет “foo”
Мы хотели вывести на экран надпись 'fooЭто моя переменная!', но ничего не получилось. Что же произошло? Интерпретатор не смог определить значение какой именно переменной нужно подставить ($v, $va, $var и т.д.) В таких неоднозначных случаях можно явно указать на имя переменной:
|
|
$echo foo${var}
Для получения информации обо всех аргументах (включая последний) используют метасимвол *. Пример:
echo $*
Внимание!!! Для вывода переменных можно использовать команду printf:
PI=3,14159265358979
printf "Число пи с точностью до 2 знака после запятой = %1.2f" $PIprintf "Число пи с точностью до 9 знака после запятой = %1.9f" $PIАрифметические операции
Команда expr (express -- выражать) вычисляет выражение expression и записывает результат в стандартный вывод. Элементы выражения разделяются пробелами; символы, имеющие специальный смысл в командном языке, нужно экранировать. Строки, содержащие специальные символы, заключают в апострофы. Используя команду expr, можно выполнять сложение, вычитание, умножение, деление, взятие остатка, сопоставление символов и т. д.
Пример. Сложение, вычитание:
b=190
a=` expr 200 - $b`
где ` - обратная кавычка (левая верхняя клавиша). Умножение *, деление /, взятие остатка %:
d=` expr $a + 125 "*" 10`
c=` expr $d % 13`
Здесь знак умножения заключается в двойные кавычки, чтобы интерпретатор не воспринимал его как метасимвол. Во второй строке переменной с присваивается значение остатка от деления переменной d на 13.
Сопоставление символов с указанием числа совпадающих символов:
|
|
concur=` expr "abcdefgh" : "abcde"`
echo $concur
Ответ 5.
Операция сопоставления обозначается двоеточием (:). Результат - переменная соncur.
Подсчет числа символов в цепочках символов. Операция выполняется с использованием функции length в команде expr:
chain="The program is written in Assembler"
str=` expr length "$chain"`
Echo $str
ответ 35. Здесь результат подсчета обозначен переменной str.
Внимание!!! Возможно использование следующей формы записи:
echo "Мне $[2000-1957] лет."
Логические выражения и операторы управления
Дата добавления: 2018-04-05; просмотров: 371; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!