
- •Сценарии оболочки
- •Запуск сценария
- •Область видимости переменных
- •Средства ввода-вывода
- •Вычисление арифметических выражений
- •Управляющие конструкции
- •Условный оператор
- •Команда test
- •1. Условия проверки файлов:
- •2. Условия проверки строк:
- •3. Условия сравнения целых чисел:
- •Оператор выбора
- •Операторы цикла Язык оболочки позволяет организовывать циклическое выполнение команд. В распоряжение пользователю предлагается 4 варианта циклов: while, until, for и select.
Средства ввода-вывода
Задачи ввода–вывода могут быть решены посредством использования специальных команд echo и read.
Команда echo выдаёт на стандартное устройство вывода значения всех своих параметров.
Команда read имя1 имя2 ... имяN считывает со стандартного устройства ввода строку, выделяет из неё отдельные слова (группы символов, отделяемые пробелами) и каждое слово заносит в указанные в качестве параметров соответствующие переменные. При этом если переменных меньше, чем выделенных слов, то в последнюю из них будет занесена оставшаяся часть строки.
В качестве примера приведён сценарий, в котором от пользователя запрашивается строка, после чего она выводится на терминал. Параметр –n запрещает перевод на следующую строку по окончании вывода командой echo, разрешённый по умолчанию.
#!/bin/sh
echo –n Input your name:
read INPUT
echo Hello, $INPUT !
Вычисление арифметических выражений
Операторы для вычисления арифметических выражений представлены в таблице в порядке понижения приоритета. Для изменения порядка вычисления используются скобки.
Оператор |
Значение |
- |
унарный минус |
!- |
логическое отрицание, двоичная инверсия (дополнение до единицы) |
*, /, % |
умножение, деление, взятие остатка от деления |
+, - |
сложение, вычитание |
<<, >> |
поразрядный сдвиг влево, поразрядный сдвиг вправо |
==, != |
проверка на равенство, проверка на неравенство |
& |
поразрядное И |
^ |
поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ |
| |
поразрядное ИЛИ |
&& |
логическое И |
|| |
логическое ИЛИ |
= |
присваивание значения |
+=, -+ |
присваивание после сложения, присваивание после вычитания |
*=, /=, %= |
присваивание после умножения, присваивание после деления, присваивание после взятия остатка от деления |
<<=, >>= |
присваивание после поразрядного сдвига влево, присваивание после поразрядного сдвига вправо |
Команда let выражение позволяет вычислять целочисленные арифметические выражения. Выражения состоят из чисел, операторов и переменных интерпретатора (без предшествующего символа $). Выражения должны браться в кавычки, если содержат пробелы либо другие специальные символы. Например:
let 2*7 # выдает значение 14
let a=11 # То же, что и a=11
let a=a+5 # Эквивалентно "a = a + 5"
let "a /= 4" # Эквивалентно let "a = a / 4"
let "a -= 5" # Эквивалентно let "a = a - 5"
let "a %= 8" # Эквивалентно let "a = a % 8"
let "count=0" "i=i+1" # Присвоить значения переменным i и count
let "num % 2" # Проверка числа на четность
Команда expr выражение является универсальным обработчиком выражений и применяется для вычисления заданного выражения. Операнды выражения обязательно должны отделяться друг от друга пробелами, а метасимволы (например, оператор умножения) должны быть экранированы. Выражения могут быть арифметическими, логическими или строковыми. Например:
expr 3 + 5 # возвратит 8
expr 5 % 3 # возвратит 2
expr 5 \* 3 # возвратит 15
Примеры подстановки арифметических выражений:
A=`expr \(5 + 3 \) / 3` # переменной А присвоить (5+3)/3
y=`expr $y + 1` # Операция инкремента переменной y,
# то же самое, что и let y=y+1
# или y=$(($y+1)).
В арифметических подстановках обратные одиночные кавычки могут быть заменены на двойные круглые скобки – $((...)) и $((...)) или конструкцией, с применением команды let.
z=$(($z+3))
z=$((z+3)) # аналогично предыдущей команде
foo=$(( ((5 + 3*2) – 4) / 2 )) # в результате выполнения этой команды
# переменная foo примет значение 3
Примечание: внутри двойных круглых скобок подстановка переменных выполняется автоматически.