If переменная не пустая linux

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» \ » необходимо экранировать внутри [ ].

больше, в смысле величины ASCII-кодов

if [[ «$a» > «$b» ]]

if [ «$a» \> «$b» ]

Обратите внимание! Символ «>» необходимо экранировать внутри [ ].

См. Пример 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.

Источник

Глава 7. Проверка условий

практически любой язык программирования включает в себя условные операторы, предназначенные для проверки условий, чтобы выбрать тот или иной путь развития событий в зависимости от этих условий. В Bash, для проверки условий, имеется команда test, различного вида скобочные операторы и условный оператор if/then.

7.1. Конструкции проверки условий

Оператор if/then проверяет — является ли код завершения списка команд 0 (поскольку 0 означает «успех» ), и если это так, то выполняет одну, или более, команд, следующие за словом then.

Существует специальная команда — [ (левая квадратная скобка). Она является синонимом команды test, и является встроенной командой (т.е. более эффективной, в смысле производительности). Эта команда воспринимает свои аргументы как выражение сравнения или как файловую проверку и возвращает код завершения в соответствии с результатами проверки (0 — истина, 1 — ложь).

Начиная с версии 2.02, Bash предоставляет в распоряжение программиста конструкцию [[ . ]] расширенный вариант команды test , которая выполняет сравнение способом более знакомым программистам, пишущим на других языках программирования. Обратите внимание: [[ — это зарезервированное слово, а не команда.

Bash исполняет [[ $a -lt $b ]] как один элемент, который имеет код возврата.

Круглые скобки (( . )) и предложение let . так же возвращают код 0 , если результатом арифметического выражения является ненулевое значение. Таким образом, арифметические выражения могут учавствовать в операциях сравнения.

Условный оператор if проверяет код завершения любой команды, а не только результат выражения, заключенного в квадратные скобки.

Оператор if/then допускает наличие вложенных проверок.

Это детальное описание конструкции «if-test» любезно предоставлено Stephane Chazelas.

Пример 7-1. Что есть «истина»?

Упражнение. Объясните результаты, полученные в Пример 7-1.

Когда if и then располагаются в одной строке, то конструкция if должна завершаться точкой с запятой. И if , и then — это зарезервированные слова. Зарезервированные слова начинают инструкцию, которая должна быть завершена прежде, чем в той же строке появится новая инструкция.

Else if и elif

elif — это краткая форма записи конструкции else if . Применяется для построения многоярусных инструкций if/then .

Конструкция if test condition-true является точным эквивалентом конструкции if [ condition-true ], где левая квадратная скобка [ выполняет те же действия, что и команда test. Закрывающая правая квадратная скобка ] не является абсолютно необходимой, однако, более новые версии Bash требуют ее наличие.

Команда test — это встроенная команда Bash, которая выполняет проверки файлов и производит сравнение строк. Таким образом, в Bash-скриптах, команда test не вызывает внешнюю ( /usr/bin/test) утилиту, которая является частью пакета sh-utils . Аналогично, [ не производит вызов утилиты /usr/bin/[, которая является символической ссылкой на /usr/bin/test.

Пример 7-2. Эквиваленты команды test — /usr/bin/test, [ ] , и /usr/bin/[

Конструкция [[ ]] более универсальна, по сравнению с [ ] . Этот расширенный вариант команды test перекочевал в Bash из ksh88 .

Внутри этой конструкции не производится никакой дополнительной интерпретации имен файлов и не производится разбиение аргументов на отдельные слова, но допускается подстановка параметров и команд.

Конструкция [[ . ]] более предпочтительна, нежели [ . ], поскольку поможет избежать некоторых логических ошибок. Например, операторы && , || , и > внутри [[ ]] вполне допустимы, в то время как внутри [ ] порождают сообщения об ошибках.

Строго говоря, после оператора if, ни команда test, ни квадратные скобки ( [ ] или [[ ]] ) не являются обязательными.

Инструкция «if COMMAND» возвращает код возврата команды COMMAND.

Точно так же, условие, находящееся внутри квадратных скобок может быть проверено без использования оператора if.

Внутри (( )) производится вычисление арифметического выражения. Если результатом вычислений является ноль, то возвращается 1 , или «ложь» . Ненулевой результат дает код возврата 0 , или «истина» . То есть полная противоположность инструкциям test и [ ] , обсуждавшимся выше.

Пример 7-3. Арифметические выражения внутри (( ))

Источник

Оболочка Bash: выясняем, имеет ли переменная значение NULL ИЛИ нет

Я новичок в скриптах bash.

Как проверить значение NULL в скриптах оболочки Linux или Unix?

Вы можете быстро проверить наличие нулевых или пустых переменных в скриптах оболочки Bash.

Вам необходимо передать параметр -z или -n в команду test или команду if или использовать условное выражение.

На этой странице показано, как узнать, имеет ли переменная оболочки bash значение NULL или нет с помощью команды test.

Чтобы узнать, является ли переменная bash нулевой:

Вернуть true, если переменная bash не установлена или имеет нулевую (пустую) строку:if [ -z “$var” ]; then echo “NULL”; else echo “Not NULL”; fi
Другой вариант, чтобы определить, установлена ли переменная bash в NULL:[ -z “$var” ] && echo “NULL”
Определите, является ли переменная bash NULL: [[ ! -z «$var» ]] && echo «Not NULL» || echo «NULL»

Давайте посмотрим синтаксиc команды test и примеры в деталях.

Синтаксис для команды if следующий:

Другой вариант, чтобы проверить, является ли переменная оболочки bash NULL или нет

Как найти значение NULL в оболочке, если есть условие в Unix

-N возвращает TRUE, если длина STRING отлична от нуля. Например:

Пример: определить, является ли переменная bash NULL

Следующий скрипт оболочки показывает различные возможности оболочки на основе bash/sh/posix:

Источник

Как проверить, что переменная установлена ​​или пуста в bash

Главное меню » Linux » Как проверить, что переменная установлена ​​или пуста в bash

Параметр ‘-v’ или ‘-z’ используется для проверки того, установлена или не установлена переменная. Вышеупомянутое логическое выражение вернет true, если переменная установлена, и false, если переменная не установлена или пуста.

Замена параметра – это еще один способ проверить, установлена ли переменная или нет. Если переменная установлена, то значение строки вернется, в противном случае вернется null.

Пример-1: проверьте, установлена или не установлена переменная, используя параметр -z

Создайте файл bash с именем check_var1.sh с помощью следующего скрипта. Здесь первое условие `if` вернет истину и напечатает «Переменная ‘num’ не установлена». В следующем операторе 20 присваивается переменной $Num. Второе условие `if` вернет false, и будет напечатано «Num установлено и значение Num=20».

Пример-2: проверьте, установлена или не установлена переменная, используя замену параметра

Создайте файл bash с именем «check_var2.sh» и добавьте следующий сценарий. Здесь переменной присваивается строковое значение, $str перед проверкой, установлена или не установлена переменная. Условие ‘if’ вернет true, и будет напечатано сообщение «переменная ‘str’ установлена и значение Hello».

Источник

Как узнать, является ли переменная пустой в Bash

Как я могу проверить, является ли переменная пустой в Bash?

8 ответов

В bash по крайней мере следующие команды проверяют , если $ var пуст :

Команда man test — ваш друг.

печатает yes , если переменная установлена. $ вернет 1, когда переменная будет установлена, иначе вернет пустую строку.

Это вернет true , если переменная не установлена ​​или установлена ​​в пустую строку («»).

вопрос спрашивает , как проверить, является ли переменная пустой строкой , и для этого уже даны лучшие ответы.
Но я попал сюда после того, как прошел период программирования на php, и то, что я действительно искал, было проверкой, подобной функции empty в php , работающей в оболочке bash.
Прочитав ответы, я понял, что не думаю о bash, но в любом случае такая функция, как empty в php, была бы очень удобной в моем bash-коде.
Поскольку я думаю, что это может случиться с другими, я решил преобразовать пустую функцию php в bash

Согласно руководству по PHP :
переменная считается пустым, если он не существует или если его значение является одним из следующих:

  • «» (пустая строка)
  • 0 (0 как целое число)
  • 0,0 (0 в виде числа с плавающей точкой)
  • «0» (0 в виде строки)
  • пустой массив
  • объявленная переменная, но без значения

Конечно, случаи null и false не могут быть преобразованы в bash, поэтому они опущены.

Демо-версия:
следующий фрагмент:

Сказав, что в bash-логике проверки на ноль в этой функции могут вызвать побочные проблемы imho, любой, кто использует эту функцию, должен оценить этот риск и, возможно, решит отключить эти проверки, оставив только первую.

Источник

Читайте также:  Аналог winapi для linux
Оцените статью