Учебники

Unix / Linux — Основные операторы оболочки

Существуют различные операторы, поддерживаемые каждой оболочкой. Мы подробно обсудим оболочку Bourne (оболочку по умолчанию) в этой главе.

Теперь мы обсудим следующие операторы —

  • Арифметические Операторы
  • Операторы отношений
  • Булевы операторы
  • Строковые операторы
  • Операторы проверки файлов

У оболочки Bourne изначально не было никакого механизма для выполнения простых арифметических операций, но она использует внешние программы, awk или expr .

В следующем примере показано, как добавить два числа —

Live Demo

#!/bin/sh

val=`expr 2 + 2`
echo "Total value : $val"

Приведенный выше скрипт сгенерирует следующий результат —

Total value : 4

Следующие пункты необходимо учитывать при добавлении —

  • Между операторами и выражениями должны быть пробелы. Например, 2 + 2 не правильно; это должно быть записано как 2 + 2.

  • Полное выражение должно быть заключено в » , называемое обратным трюком.

Между операторами и выражениями должны быть пробелы. Например, 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 в
== (Равенство) Сравнивает два числа, если оба одинаковы, возвращает true. [$ a == $ b] вернет false.
! = (Не равенство) Сравнивает два числа, если оба отличаются, возвращает true. [$ a! = $ b] вернет true.

Очень важно понимать, что все условные выражения должны быть в квадратных скобках с пробелами вокруг них, например, [$ 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] является неправильным.

Булевы операторы

Следующие логические операторы поддерживаются Bourne Shell.

Предположим, что переменная a содержит 10, а переменная b содержит 20, тогда —

Показать примеры

оператор Описание пример
! Это логическое отрицание. Это инвертирует истинное условие в ложное и наоборот. [! ложь] это правда.
Это логическое ИЛИ . Если один из операндов является истинным, тогда условие становится истинным. [$ a -lt 20 -o $ b -gt 100] верно.
-a Это логическое И. Если оба операнда имеют значение true, то условие становится истинным, в противном случае — ложным. [$ a -lt 20 -a $ b -gt 100] неверно.

Строковые операторы

Следующие строковые операторы поддерживаются Bourne Shell.

Предположим, что переменная a содержит «abc», а переменная b содержит «efg», тогда —

Показать примеры

оператор Описание пример
знак равно Проверяет, равны ли значения двух операндов или нет; если да, то условие становится истинным. [$ a = $ b] не соответствует действительности.
знак равно Проверяет, равны ли значения двух операндов или нет; если значения не равны, то условие становится истинным. [$ a! = $ b] верно.
-z Проверяет, равен ли заданный размер строкового операнда нулю; если это нулевая длина, то он возвращает истину. [-z $ a] не соответствует действительности.
-n Проверяет, является ли заданный размер операнда строки ненулевым; если это ненулевая длина, тогда это возвращает истину. [-n $ a] не является ложным.
ул Проверяет, не является ли str пустой строкой; если он пуст, он возвращает false. [$ a] не является ложным.

Операторы проверки файлов

У нас есть несколько операторов, которые можно использовать для тестирования различных свойств, связанных с файлом Unix.

Предположим, переменная file содержит существующее имя файла «test», размер которого составляет 100 байт, и имеет права на чтение , запись и выполнение для:

Показать примеры

оператор Описание пример
-b файл Проверяет, является ли файл специальным блочным файлом; если да, то условие становится истинным. [-b $ file] имеет значение false.
-c файл Проверяет, является ли файл символьным специальным файлом; если да, то условие становится истинным. [-c $ file] имеет значение false.
-d файл Проверяет, является ли файл каталогом; если да, то условие становится истинным. [-d $ file] не соответствует действительности.
-f файл Проверяет, является ли файл обычным файлом, а не каталогом или специальным файлом; если да, то условие становится истинным. [-f $ file] — это правда.
-g файл Проверяет, имеет ли файл установленный бит установленного идентификатора группы (SGID); если да, то условие становится истинным. [-g $ file] имеет значение false.
-k файл Проверяет, установлен ли в файле свой липкий бит; если да, то условие становится истинным. [-k $ file] имеет значение false.
-p файл Проверяет, является ли файл именованным каналом; если да, то условие становится истинным. [-p $ file] имеет значение false.
-t файл Проверяет, открыт ли дескриптор файла и связан ли он с терминалом; если да, то условие становится истинным. [-t $ file] является ложным.
-u файл Проверяет, установлен ли в файле установленный бит идентификатора пользователя (SUID); если да, то условие становится истинным. [-u $ file] является ложным.
-r файл Проверяет, доступен ли файл для чтения; если да, то условие становится истинным. [-r $ file] — это правда.
-w файл Проверяет, доступен ли файл для записи; если да, то условие становится истинным. [-w $ file] — это правда.
-x файл Проверяет, является ли файл исполняемым; если да, то условие становится истинным. [-x $ file] — это правда.
-s файл Проверяет, имеет ли файл размер больше 0; если да, то условие становится истинным. [-s $ file] — это правда.
-e файл Проверяет, существует ли файл; Значение true, даже если файл является каталогом, но существует. [-e $ file] — это правда.

Операторы оболочки C

Следующая ссылка даст вам краткое представление об операторах C Shell —

Операторы оболочки C

Корн Шелл Операторс

Следующая ссылка поможет вам понять Korn Shell Operators —

Корн Шелл Операторс