Linux Bash Not Equal “-ne” , “!=” Operators Tutorial
Linux Bash scripting language provides the not equal “-ne” operator in order to compare two values if they are not equal. The not equal operator generally used with the if or elif statements to check not equal and execute some commands.
Not Equal “-ne” Operator Syntax
Linux bash not equal operator is expressed with the “-ne” which is the first letter of “not equal”. Also the “!=” is used to express not equal operator. The “!=” is also popularly used in other programming languages for not equal. The not equal operator is surrounded with the brackets [[ … ]] in order to work.
VALUE1 is the first value we will compare with the VALUE2. Generally VALUE1 is a bash variable.
VALUE2 is the second value we will compare with the VALUE1. Generally the VALUE2 is a value which can be string, number etc.
The not equal comparison operator returns a boolean value which can be True or False. Generally, this boolean value is used with the if or elif statements.
Check If Specified String Is Not Equal
In this example, we will check if the specified string bash variable is not equal to the specified string. We will create the string variable $name and check with the string “ismail”. The -ne operator can not be used with the string types, instead of the != should be used for string comparison.
Alternatively, we can check two string variables like below. The variables are named as $myname and $yourname.
Check If Specified Number Is Not Equal
The not equal operator can be also used for numbers or integers to compare them each other. In the following example we will check if the bash integer variable $age is not equal to 18.
Alternatively, two integer or number variables can be compared for their inequality. In the following example, we will check if $myage and $yourage are not equal.
Источник
7.3. Операции сравнения
сравнение целых чисел
if [ «$a» -eq «$b» ]
if [ «$a» -ne «$b» ]
if [ «$a» -gt «$b» ]
больше или равно
if [ «$a» -ge «$b» ]
if [ «$a» -lt «$b» ]
меньше или равно
if [ «$a» -le «$b» ]
меньше или равно (внутри двойных круглых скобок)
больше (внутри двойных круглых скобок)
больше или равно (внутри двойных круглых скобок)
сравнение строк
if [ «$a» = «$b» ]
if [ «$a» == «$b» ]
if [ «$a» != «$b» ]
Этот оператор используется при поиске по шаблону внутри [[ . ]].
меньше, в смысле величины ASCII-кодов
if [[ «$a» if [ «$a» \ » необходимо экранировать внутри [ ].
Обратите внимание! Символ «>» необходимо экранировать внутри [ ].
См. Пример 25-6 относительно применения этого оператора сравнения.
строка «пустая» , т.е. имеет нулевую длину
строка не «пустая» .
Оператор -n требует, чтобы строка была заключена в кавычки внутри квадратных скобок. Как правило, проверка строк, не заключенных в кавычки, оператором ! -z, или просто указание строки без кавычек внутри квадратных скобок (см. Пример 7-6), проходит нормально, однако это небезопасная, с точки зрения отказоустойчивости, практика. Всегда заключайте проверяемую строку в кавычки. [1]
Пример 7-5. Операции сравнения
Пример 7-6. Проверка — является ли строка пустой
Пример 7-7. zmost
построение сложных условий проверки
логическое И (and)
exp1 -a exp2 возвращает true, если оба выражения, и exp1, и exp2 истинны.
логическое ИЛИ (or)
exp1 -o exp2 возвращает true, если хотябы одно из выражений, exp1 или exp2 истинно.
Они похожи на операторы Bash && и ||, употребляемые в двойных квадратных скобках.
Операторы -o и -a употребляются совместно с командой test или внутри одинарных квадратных скобок.
Чтобы увидеть эти операторы в действии, смотрите Пример 8-3 и Пример 25-11.
В этом руководстве мы познакомим вас с основами if оператора Bash и покажем, как его использовать в сценариях оболочки
Принятие решений — одна из самых фундаментальных концепций компьютерного программирования. Как и в любом другом языке программирования, if , if..else , if..elif..else и вложенные if в Bash могут быть использованы для выполнения кода на основе определенного состояния.
Условия Bash if могут иметь разные формы. Самое основное утверждение if принимает следующую форму:
Если TEST-COMMAND оценивается как True , STATEMENTS выполняется. Если TEST-COMMAND возвращается False , ничего не происходит, STATEMENTS игнорируется.
Как правило, рекомендуется всегда делать отступы для вашего кода и отделять блоки кода пустыми строками. Большинство людей предпочитают использовать отступы с 4 или 2 пробелами. Отступы и пустые строки делают ваш код более читабельным и упорядоченным.
Давайте посмотрим на следующий пример сценария, который проверяет, больше ли заданное число, чем 10:
Сохраните код в файле и запустите его из командной строки:
Скрипт предложит вам ввести номер. Например, если вы введете 15, test команда выполнит оценку, true потому что 15 больше 10, и echo команда внутри then условия будет выполнена.
if..else
Оператор Bash if..else принимает следующую форму:
Если TEST-COMMAND оценка до True , STATEMENTS1 будет выполнен. В противном случае, если TEST-COMMAND возвращается False , STATEMENTS2 будет выполнен. Вы можете иметь только одно else условие в объявлении.
Давайте добавим else условие в предыдущий пример сценария:
Если вы запустите код и введете число, сценарий напечатает другое сообщение в зависимости от того, больше это число или меньше / равно 10.
if..elif..else
Оператор Bash if..elif..else принимает следующую форму:
Вы можете иметь одно или несколько elif условий в объявлении. else Пункт не является обязательным.
Условия оцениваются последовательно. Как только условие возвращается, True остальные условия не выполняются, и управление программой переходит к концу if операторов.
Давайте добавим условие elif к предыдущему сценарию:
Вложенные if
Bash позволяет вам вкладывать if утверждения в if утверждения. Вы можете разместить несколько if операторов внутри другого if оператора.
Следующий скрипт предложит вам ввести три числа и напечатает наибольшее число среди трех чисел.
Вот как будет выглядеть вывод:
Как правило, более эффективно использовать case оператор вместо вложенных if операторов.
Несколько условий
Логические OR и AND операторы позволяют использовать несколько условий в if выражениях.
Вот еще одна версия скрипта для печати наибольшего числа среди трех чисел. В этой версии вместо вложенных if операторов мы используем оператор логического AND ( && ).
Тестовые операторы
В Bash команда test принимает одну из следующих синтаксических форм:
Чтобы сделать скрипт переносимым, предпочтите использовать старую [ команду test, которая доступна во всех оболочках POSIX. Новая обновленная версия test команды [[ (двойные скобки) поддерживается в большинстве современных систем, использующих Bash, Zsh и Ksh в качестве оболочки по умолчанию.
Чтобы отменить тестовое выражение, используйте логический оператор NOT ( ! ). При сравнении строк всегда используйте одинарные или двойные кавычки, чтобы избежать проблем с разбивкой слов.
Ниже приведены некоторые из наиболее часто используемых операторов:
-n VAR — Истина, если длина VAR больше нуля.
-z VAR — Правда, если VAR пусто.
STRING1 = STRING2 — Правда, если STRING1 и STRING2 равны.
STRING1 != STRING2 — Правда если STRING1 и STRING2 не равны.
INTEGER1 -eq INTEGER2 — Правда, если INTEGER1 и INTEGER2 равны.
INTEGER1 -gt INTEGER2 — Верно, если INTEGER1 больше чем INTEGER2 .
INTEGER1 -lt INTEGER2 — Правда, если INTEGER1 меньше, чем INTEGER2 .
INTEGER1 -ge INTEGER2 — Истинно, если INTEGER1 равно или больше, чем INTEGER2.
INTEGER1 -le INTEGER2 — Верно, если INTEGER1 равно или меньше чем INTEGER2 .
-h FILE — Истина, если FILE существует и является символической ссылкой.
-r FILE — Истинно, если FILE существует и доступно для чтения.
-w FILE — Истина, если FILE существует и доступна для записи.
-x FILE — True, если FILE существует и является исполняемым.
-d FILE — True, если FILE существует и является каталогом.
-e FILE — Истинно, если FILE существует и является файлом, независимо от типа (узел, каталог, сокет и т. Д.).
-f FILE — True, если FILE существует и является обычным файлом (не каталогом или устройством).
Вывод
Операторы if , if..else and if..elif..else позволяют контролировать поток выполнения скрипта Bash, оценивая заданные условия.
Источник
Как сравнить строки в Bash
При написании сценариев Bash вам часто нужно сравнивать две строки, чтобы проверить, равны они или нет. Две строки равны, если они имеют одинаковую длину и содержат одинаковую последовательность символов.
В этом руководстве описывается, как сравнивать строки в Bash.
Операторы сравнения
Операторы сравнения — это операторы, которые сравнивают значения и возвращают истину или ложь. При сравнении строк в Bash вы можете использовать следующие операторы:
string1 = string2 и string1 == string2 — оператор равенства возвращает истину, если операнды равны.
Используйте оператор = с командой test [ .
Используйте оператор == с командой [[ для сопоставления с образцом.
string1 != string2 — оператор неравенства возвращает истину, если операнды не равны.
string1 =
regex — Оператор регулярного выражения возвращает истину, если левый операнд совпадает с расширенным регулярным выражением справа.
string1 > string2 — оператор «больше» возвращает истину, если левый операнд больше правого, отсортированный в лексикографическом (алфавитном) порядке.
string1 — оператор «меньше» возвращает истину, если правый операнд больше правого, отсортированный в лексикографическом (алфавитном) порядке.
-z string — Истина, если длина строки равна нулю.
-n string — Истина, если длина строки отлична от нуля.
При сравнении строк следует учитывать несколько моментов:
Между бинарным оператором и операндами должен использоваться пробел.
Всегда используйте двойные кавычки вокруг имен переменных, чтобы избежать проблем с разделением слов или подстановкой слов.
Bash не разделяет переменные по «типу», переменные обрабатываются как целые или строковые в зависимости от контекста.
Проверьте, равны ли две строки
В большинстве случаев при сравнении строк вам нужно проверить, равны ли строки или нет.
Следующий сценарий использует оператор if и команду test [ чтобы проверить, совпадают ли строки с оператором = :
Когда сценарий будет выполнен, он напечатает следующий вывод.
Вот еще один сценарий, который принимает ввод от пользователя и сравнивает заданные строки. В этом примере мы будем использовать команду [[ и оператор == .
Запустите сценарий и введите строки при появлении запроса:
Вы также можете использовать логические и && и или || для сравнения строк:
Проверьте, содержит ли строка подстроку
Есть несколько способов проверить, содержит ли строка подстроку.
Один из подходов — использовать окружение подстроки символами звездочки * что означает соответствие всем символам.
Другой вариант — использовать оператор регулярного выражения =
как показано ниже:
Точка, за которой следует звездочка .* Соответствует нулю или более вхождений любого символа, кроме символа новой строки.
Проверьте, пуста ли строка
Довольно часто вам также нужно будет проверить, является ли переменная пустой строкой или нет. Вы можете сделать это с помощью операторов -n и -z .
Сравнение строк с оператором Case
Вместо использования тестовых операторов вы также можете использовать оператор case для сравнения строк:
Лексикографическое сравнение
Лексикографическое сравнение — это операция, при которой две строки сравниваются в алфавитном порядке путем последовательного сравнения символов в строке слева направо. Такое сравнение используется редко.
Следующие сценарии лексикографически сравнивают две строки:
Скрипт выдаст следующее:
Выводы
Сравнение строк — одна из самых основных и часто используемых операций в сценариях Bash. После прочтения этого руководства вы должны хорошо понимать, как сравнивать строки в Bash. Вы также можете ознакомиться с нашим руководством по объединению строк .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Операторы сравнения Bash
Бинарные операторы сравнения сравнивают две переменные или величины.
Для сравнения строк используются одни операторы сравнения для чисел другие.
Сравнение чисел
is equal to — равняется
is not equal to — не равняется
is greater than
is equal to — равняется
is greater than or equal to
is less than or equal to
is greater than (within double parentheses)
is greater than or equal to (within double parentheses)
Сравнение строк
is equal to — равняется
Caution Note the whitespace framing the =. if [ «$a»=»$b» ] is not equivalent to the above.
is not equal to — не равняется
This is a synonym for =. Note The == comparison operator behaves differently within a double-brackets test than within single brackets. [[ $a == z* ]] # True if $a starts with an «z» (pattern matching). [[ $a == «z*» ]] # True if $a is equal to z* (literal matching). [ $a == z* ] # File globbing and word splitting take place. [ «$a» == «z*» ] # True if $a is equal to z* (literal matching). # Thanks, Stéphane Chazelas
is not equal to — не равняется
This operator uses pattern matching within a [[ . ]] construct.
is greater than, in ASCII alphabetical order
if [[ «$a» > «$b» ]] if [ «$a» \> «$b» ]
Note that the «>» needs to be escaped within a [ ] construct. See Example 27-11 for an application of this comparison operator.
string is null, that is, has zero length
String=» # Zero-length («null») string variable.
if [ -z «$String» ] then echo «\$String is null.» else echo «\$String is NOT null.» fi # $String is null.
string is not null.
Caution The -n test requires that the string be quoted within the test brackets. Using an unquoted string with ! -z, or even just the unquoted string alone within test brackets (see Example 7-6) normally works, however, this is an unsafe practice. Always quote a tested string.