Unix / Linux - основные операторы оболочки
Каждая оболочка поддерживает различные операторы. В этой главе мы подробно обсудим оболочку Bourne (оболочку по умолчанию).
Теперь мы обсудим следующие операторы -
- Арифметические операторы
- Операторы отношения
- Булевы операторы
- Строковые операторы
- Операторы проверки файлов
В оболочке Bourne изначально не было механизма для выполнения простых арифметических операций, но она также использует внешние программы. awk или же expr.
В следующем примере показано, как сложить два числа -
#!/bin/sh
val=`expr 2 + 2`
echo "Total value : $val"
Приведенный выше сценарий сгенерирует следующий результат -
Total value : 4
При добавлении необходимо учитывать следующие моменты:
Между операторами и выражениями должны быть пробелы. Например, 2 + 2 неверно; он должен быть записан как 2 + 2.
Полное выражение должно быть заключено между ‘ ‘, называется обратная кавычка.
Арифметические операторы
Bourne Shell поддерживает следующие арифметические операторы.
Предположим переменную a содержит 10 и переменную b держит 20, тогда -
Показать примеры
Оператор | Описание | пример |
---|---|---|
+ (Дополнение) | Добавляет значения по обе стороны от оператора | expr $ a + $ b даст 30 |
- (Вычитание) | Вычитает правый операнд из левого операнда | `expr $ a - $ b` даст -10 |
* (Умножение) | Умножает значения по обе стороны от оператора | `expr $ a \ * $ b` даст 200 |
/ (Деление) | Делит левый операнд на правый операнд | expr $ b / $ a даст 2 |
% (Модуль) | Делит левый операнд на правый и возвращает остаток | expr $ b% $ a даст 0 |
= (Назначение) | Назначает правый операнд левому операнду | a = $ b присвоит значение b элементу a |
== (Равенство) | Сравнивает два числа, если они одинаковы, возвращает истину. | [$ a == $ b] вернет false. |
! = (Не равенство) | Сравнивает два числа, если они разные, возвращает истину. | [$ a! = $ b] вернет истину. |
Очень важно понимать, что все условные выражения должны заключаться в квадратные скобки с пробелами вокруг них, например [ $a == $b ] правильно, тогда как [$a==$b] это неверно.
Все арифметические вычисления производятся с использованием длинных целых чисел.
Операторы отношения
Bourne Shell поддерживает следующие операторы отношения, относящиеся к числовым значениям. Эти операторы не работают для строковых значений, если их значение не является числовым.
Например, следующие операторы будут работать для проверки соотношения между 10 и 20, а также между «10» и «20», но не между «десять» и «двадцать».
Предположим переменную a содержит 10 и переменную b держит 20, тогда -
Показать примеры
Оператор | Описание | пример |
---|---|---|
-eq | Проверяет, равны ли значения двух операндов; если да, то условие выполняется. | [$ a -eq $ b] неверно. |
-ne | Проверяет, равны ли значения двух операндов; если значения не равны, то условие становится истинным. | [$ a -ne $ b] верно. |
-gt | Проверяет, больше ли значение левого операнда, чем значение правого операнда; если да, то условие выполняется. | [$ a -gt $ b] неверно. |
-lt | Проверяет, меньше ли значение левого операнда, чем значение правого операнда; если да, то условие выполняется. | [$ a -lt $ b] верно. |
-ge | Проверяет, больше ли значение левого операнда или равно значению правого операнда; если да, то условие выполняется. | [$ a -ge $ b] неверно. |
-le | Проверяет, меньше ли значение левого операнда или равно значению правого операнда; если да, то условие выполняется. | [$ a -le $ b] верно. |
Очень важно понимать, что все условные выражения должны быть заключены в квадратные скобки с пробелами вокруг них. Например,[ $a <= $b ] правильно, тогда как [$a <= $b] это неверно.
Булевы операторы
Оболочка Борна поддерживает следующие логические операторы.
Предположим переменную a содержит 10 и переменную b держит 20, тогда -
Показать примеры
Оператор | Описание | пример |
---|---|---|
! | Это логическое отрицание. Это превращает истинное условие в ложное и наоборот. | [! false] верно. |
-o | Это логично OR. Если один из операндов истинен, то условие становится истинным. | [$ a -lt 20 -o $ b -gt 100] верно. |
-a | Это логично AND. Если оба операнда истинны, тогда условие становится истинным, иначе ложным. | [$ a -lt 20 -a $ b -gt 100] неверно. |
Строковые операторы
Bourne Shell поддерживает следующие строковые операторы.
Предположим переменную a содержит "abc" и переменную b держит "efg", затем -
Показать примеры
Оператор | Описание | пример |
---|---|---|
= | Проверяет, равны ли значения двух операндов; если да, то условие выполняется. | [$ a = $ b] неверно. |
!= | Проверяет, равны ли значения двух операндов; если значения не равны, условие становится истинным. | [$ a! = $ b] верно. |
-z | Проверяет, равен ли размер заданного строкового операнда нулю; если длина равна нулю, возвращается истина. | [-z $ a] неверно. |
-n | Проверяет, не равен ли размер заданного строкового операнда нулю; если это ненулевая длина, возвращается истина. | [-n $ a] не является ложным. |
str | Проверяет, если strне пустая строка; если он пуст, то возвращает false. | [$ a] не является ложным. |
Операторы проверки файлов
У нас есть несколько операторов, которые можно использовать для проверки различных свойств, связанных с файлом Unix.
Предположим переменную file содержит имя существующего файла "test" размером 100 байт и read, write и execute разрешение на -
Показать примеры
Оператор | Описание | пример |
---|---|---|
-b file | Проверяет, является ли файл специальным блочным файлом; если да, то условие выполняется. | [-b $ file] неверно. |
-c file | Проверяет, является ли файл специальным символьным файлом; если да, то условие выполняется. | [-c $ file] неверно. |
-d file | Проверяет, является ли файл каталогом; если да, то условие выполняется. | [-d $ file] неверно. |
-f file | Проверяет, является ли файл обычным файлом, а не каталогом или специальным файлом; если да, то условие выполняется. | [-f $ file] верно. |
-g file | Проверяет, установлен ли в файле бит установленного идентификатора группы (SGID); если да, то условие выполняется. | [-g $ file] неверно. |
-k file | Проверяет, установлен ли у файла липкий бит; если да, то условие выполняется. | [-k $ file] неверно. |
-p file | Проверяет, является ли файл именованным каналом; если да, то условие выполняется. | [-p $ file] неверно. |
-t file | Проверяет, открыт ли дескриптор файла и связан ли он с терминалом; если да, то условие выполняется. | [-t $ file] неверно. |
-u file | Проверяет, установлен ли в файле бит установки идентификатора пользователя (SUID); если да, то условие выполняется. | [-u $ file] неверно. |
-r file | Проверяет, доступен ли файл для чтения; если да, то условие выполняется. | [-r $ file] верно. |
-w file | Проверяет, доступен ли файл для записи; если да, то условие выполняется. | [-w $ file] верно. |
-x file | Проверяет, является ли файл исполняемым; если да, то условие выполняется. | [-x $ file] верно. |
-s file | Проверяет, имеет ли файл размер больше 0; если да, то условие выполняется. | [-s $ file] верно. |
-e file | Проверяет, существует ли файл; верно, даже если файл является каталогом, но существует. | [-e $ file] верно. |
Операторы оболочки C
Следующая ссылка даст вам краткое представление об операторах оболочки C -
Операторы оболочки C
Операторы Korn Shell
Следующая ссылка поможет вам понять операторов Korn Shell -
Операторы Korn Shell