Аргументы командной строки. В сценарии, как и в командах Linux, можно использовать аргументы. Аргумент в сценарии обозначается оператором $ с указанием номера позиции в командной строке. Нумерация параметров начинается с единицы, а заканчивается девятью. Первый параметр задается переменной $1, второй — $2 и т. д. Аргумент $0 резервируется для имени shell-сценария, в качестве которого выступает первое слово, находящееся в командной строке. По умолчанию имеется возможность устанавливать 9 переменных с $1 до $9 . Если вводится несколько аргументов, можно отдельно обращаться к каждому из них по его номеру. В следующем примере в командной строке вводятся три аргумента. Предварительно создадим скрипт arguments с аргументами, а потом его выполним.
Обращаем ваше внимание, если вам требуется использовать аргумент(ы) из нескольких слов, вы должны в командной строке взять его (их) в двойные кавычки. Иногда требуется задать в сценарии точное количество аргументов, это можно выполнить с помощью аргумента $# . Параметр $* позволяет указать все аргументы в командной строке.
Переменная export. Иногда для разных файлов-сценария требуется воспользоваться определенной переменной, которая уже была определена. Переменные, которые вы определяете в интерпретаторе shell, являются локальными для него. В некотором смысле такая переменная принадлежит своему интерпретатору. Непосредственно определить переменную для другого интерпретатора нельзя, однако можно экспортировать определение переменной из одного интерпретатора в другой с помощью команды export. Команда export содержит инструкцию для системы, в соответствии с которой для каждого вновь образованного shell будет определяться копия этой переменной. Каждый новый интерпретатор shell будет иметь собственную копию экспортированной переменной. В следующем примере определим переменную «rrr» и экспортируем ее для других интерпретаторов с помощью команды export.
Арифметические операции – команда let. Команда let — это команда интерпретатора BASH shell, обеспечивающая выполнение операций над арифметическими величинами. С помощью этой команды можно сравнивать числовые значения или выполнять над ними арифметические операции, такие как сложение или умножение. Формат команды: let значение1 оператор значение2. Приведем пример.
$ let 2*5
В арифметические выражения, использующие оператор let, можно включать и операторы присваивания. В следующем примере результат умножения двух чисел присваивается переменной total.
$ let “total=2*5”
$ echo $total
$
Операторы сравнения часто используются для сравнения числовых значений в управляющих конструкциях, таких как циклы и условные переходы. В следующем примере команды сценария file1 четырежды выводят на экран слово "Привет!". В данном случае для управления выходом из цикла используется оператор let "ttt <= 4", а для увеличения переменной цикла again на единицу — оператор let "ttt = ttt + 1". Обратите внимание на то, что при изменении переменной again ее вычислять не требуется.
File1
ttt=l
while let "ttt<= 4"
do
echo $ttt Привет!
let "ttt = ttt + 1"
Done
Выполнение скрипта:
$ file1
Привет!
Привет!
Привет!
Кроме того, вы также можете использовать и другие арифметические операторы. В таблице 1 приведены арифметические операторы и операторы сравнения Bash Shell.
Таблица 1 - Операторы BASH shell
Арифметические операторы
Функции
*
Умножение
/
Деление
+
Сложение
(
Вычитание
%
Деление с остатком
Операторы сравнения
Функции
>
Больше чем
<
Меньше чем
>=
Больше либо равно
<=
Меньше либо равно
=
Равенство в выражениях
= =
Равенство в команде let
!=
Не равно
&
Логическое И
|
Логическое ИЛИ
!
Логическое НЕ
Управляющие конструкции. Управляющие конструкции предназначены для управления ходом выполнения команд shell-сценария. Эти конструкции позволяют организовать повторное выполнение определенной последовательности команд или выбирать для выполнения команды, необходимые в конкретной ситуации. Управляющая конструкция состоит из двух основных компонентов: операции проверки и команд. В результате выполнения сравнения (проверки условия) возвращается значение «истина» или «ложь», а затем на основании полученного результата выполняются определенные команды. Существует два вида управляющих конструкций: циклические (циклы) и условные (условия). Циклическая конструкция используется для повторного выполнения команд, тогда как условная — для выполнения последовательности команд., которая удовлетворяет определенным условиям. В интерпретаторе BASH shell можно использовать три циклические конструкции, while, for и for-in, и две условные — if и case.
Управляющие конструкции while и if — это конструкции общего назначения, которые обычно используются при решении таких задач, как итерационные вычисления и проверка различных условий. Управляющие конструкции case и for ориентированы на более узкий круг задач. Конструкция case является многовариантным оператором и представляет собой частный случай условного оператора if. Эта конструкция часто используется при создании меню. Конструкция for представляет собой цикл, однократно обрабатывающий всю информацию для каждого значения, включенного в список, до тех пор, пока не встретится окончание списка.
Кроме сравнения значений или переменных, управляющие конструкции if и while можно применять для проверки того, успешно или неудачно была выполнена системная команда Linux. Напомним, что в Linux каждая выполняемая команда возвращает код завершения. Если выполнение команды было успешным, ее код завершения равен 0. Если по какой-либо причине команда не была выполнена успешно, кодом завершения будет некоторое положительное значение, указывающее тип ошибки. Управляющие конструкции if и while позволяют проверить, чему был равен код завершения: 0 или некоторому другому значению. Если код завершения равен нулю, значит, выполнение команды было успешным и управляющая конструкция if или while будет завершена.
Команда test. Сравнивать значения можно не только с помощью условных управляющих конструкций, но также с помощью команды test. При сравнении двух значений test возвращает 0 в том случае, если сравнение будет успешным. Команда test позволяет сравнивать целые числа, строки и даже выполнять логические операции. Совместно с командой test применяют опции, которые задают тип сравнения. Полный перечень опций приведен в таблице 2.
Таблица 2. Операции, выполняемые командой test интерпретатора BASH shell
Сравнение целых чисел
Функция
-gt
Больше чем
-it
Меньше чем
-ge
Больше чем либо равно
-le
Меньше чем либо равно
-eq
Равно
-ne
Не равно
Сравнение строк
Функция
-2
Проверка на наличие пустой строки
-n
Проверка на наличие строкового значения
=
Проверка строк на равенство
! =
Прооверка строк на неравенство
str
Проверка на наличие строки, состоящей из нулей
Логические операции
Функция
-a
Логическое И
-о
Логическое ИЛИ
i
Логическое НЕ
Проверка файлов
Функция
-f
Установка факта существования файла и его регулярности
-s
Проверяется, не является ли файл пустым
-r
Проверка возможности считывания из файла
-w
Проверка возможности записи в файл, а также его изменения
-x
Проверяется, является ли файл исполнимым
-d
Проверяется, является ли имя файла именем каталога
-h
Проверяется, является ли имя файла символической ссылкой
-c
Проверяется, обозначает ли имя файла байт-ориентированное устройство
-b
Проверяется, обозначает ли имя блок-ориентированное устройство