Логические выражения и операторы управления



Лабораторная работа №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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!