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