- Shell script — exiting script if variable is null or empty
- 7 Answers 7
- Как определить, пуста ли переменная bash?
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Оболочка Bash: выясняем, имеет ли переменная значение NULL ИЛИ нет
- Как найти значение NULL в оболочке, если есть условие в Unix
- Как проверить, что переменная установлена или пуста в bash
- Пример-1: проверьте, установлена или не установлена переменная, используя параметр -z
- Пример-2: проверьте, установлена или не установлена переменная, используя замену параметра
- Пример-3: Проверить, что переменная пуста или нет
- Вывод
Shell script — exiting script if variable is null or empty
I am expecting to use the below variable in my bash script but in case if this is empty or null what would be the best way to handle it and exit from script.
I am seeing answers with ‘set -u’. I know this will work but is this good for production environment?
yes, variable consisting of whitespaces, considered empty. basically, I am thinking to put a check like if [[ ! -z «$
7 Answers 7
There is a built-in operator for requiring that a variable is set. This will cause the script to exit if it isn’t.
Commonly this is used with the : no-op near the beginning of the script.
The conflation of «unset or empty» is somewhat different. There is no similar construct for exiting on an empty but set value, but you can easily use the related syntax $ which expands to $var if it is set and nonempty, and default otherwise. There is also $ which only produces default if the variable is properly unset.
This can be particularly useful when you want to use set -u but need to cope with a possibly unset variable:
case $ in '') echo "$0: Need a value in var" >&2; exit 1;; esac
I somewhat prefer case over if [ «$» = » ] , mainly because it saves me from having to wrap double quotes around $ , and the pesky case of a value in $var which gets interpreted as an option to [ and gives you an error message when you least expect it. (In Bash, [[ doesn’t have these problems; but I prefer to stick to POSIX shell when I can.)
Как определить, пуста ли переменная bash?
Как лучше всего определить, пуста ли переменная в bash («»)?
Я слышал, что рекомендуется делать if [ «x$variable» = «x» ].
Это правильный способ? (должно же быть что-то более простое).
Ответ 1
Это вернет true, если переменная не установлена или установлена в пустую строку («»).
if [ -z «$» ];
Ответ 2
В Bash, когда вы не заботитесь о переносимости для оболочки, которые его не поддерживают, вы всегда должны использовать синтаксис двойных скобок:
Например:
if [[ -z $variable ]]
if [[ -z «$variable» ]]
if [[ ! $variable ]]
if [[ ! «$variable» ]]
При использовании двойных квадратных скобок кавычки не нужны. Тест для переменной, которая содержит значение, можно упростить:
if [[ $variable ]]
Этот синтаксис совместим с ksh (по крайней мере, с ksh93). Он не работает в чистом POSIX или старых оболочках Bourne, таких как sh или dash.
Также можно проверить, не установлена ли конкретная переменная:
if [[ -z $ ]]
где «х» произвольное значение.
Если вы хотите узнать, является ли переменная нулевой, и не отключенной:
if [[ -z $variable && $ ]]
Ответ 3
Ответ 4
-z это лучший способ.
Еще один вариант, который я использовал, — это установить переменную и переопределить другой переменной, например
export PORT=$
Если $MY_PORT переменная пуста, в PORT устанавливается значение 5432, в противном случае для PORT устанавливается значение MY_PORT. Обратите внимание, что синтаксис включает двоеточие и тире.
Ответ 5
Если вас интересует различие между состояниями set-empty и unset, смотрите на параметр -u для bash:
$ set -u
$ echo $BAR
bash: BAR: unbound variable
$ [ -z «$BAR» ] && echo true
bash: BAR: unbound variable
$ BAR=»»
$ echo $BAR
$ [ -z «$BAR» ] && echo true
true
Ответ 6
Альтернатива, которую я видел – это [ -z «$foo» ].Однако я не уверен, почему люди используют этот метод, кто-нибудь знает?
[ «x$» = «x» ]
В любом случае, если вы запрещаете неустановленные переменные (с помощью set –u или set -o nounset), у вас возникнут проблемы с обоими этими методами. Для этого есть простое решение:
[ -z «$» ]
Примечание: это оставит вашу переменную undef.
Ответ 7
- «» (пустая строка)
- 0 (0 как целое число)
- 0,0 (0 в виде числа с плавающей запятой)
- «0» (0 в виде строки)
- пустой массив
- объявленна, но без значения
Ответ 8
Мои 5 центов: есть более короткий синтаксис, чем if .
VALUE=»$»
В этой строке будет установлено ЗНАЧЕНИЕ, если был предоставлен аргумент, и будет напечатано сообщение об ошибке с добавлением номера строки сценария (завершится выполнение сценария).
Ответ 9
Предпочитаю более понятный способ проверки:
if [ «$» == «» ]; then
echo VARIABLE is empty
else
echo VARIABLE is not empty
fi
Ответ 10
Не совсем точный ответ, но я столкнулся с этим приемом. Если искомая строка приходит от «команды», то вы можете сохранить команду в переменной env. и затем выполнять ее каждый раз для оператора if, тогда скобки не нужны!
Например, эта команда, которая определяет, находитесь ли вы в debian:
grep debian /proc/version
Полный пример:
IS_DEBIAN=»grep -i debian /proc/version»
if $IS_DEBIAN; then
echo ‘yes debian’
else
echo ‘non debian’
fi
Таким образом, это косвенный способ, который проверяет на пустую строку (проверяет ответ команды на ошибку, и может вернуть пустую строку).
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Оболочка Bash: выясняем, имеет ли переменная значение NULL ИЛИ нет
Как проверить значение 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 следующий:
my_var="nixCraft" if [ -z "$my_var" ] then echo "\$my_var is NULL" else echo "\$my_var is NOT NULL" fi
my_var="" if test -z "$my_var" then echo "\$my_var is NULL" else echo "\$my_var is NOT NULL" fi
Другой вариант, чтобы проверить, является ли переменная оболочки bash NULL или нет
[ -z "$my_var" ] && echo "NULL" [ -z "$my_var" ] && echo "NULL" || echo "Not NULL"
[[ -z "$my_var" ]] && echo "NULL" [[ -z "$my_var" ]] && echo "NULL" || echo "Not NULL"
## Check if $my_var is NULL using ! i.e. check if expr is false ## [ ! -z "$my_var" ] || echo "NULL" [ ! -z "$my_var" ] && echo "Not NULL" || echo "NULL" [[ ! -z "$my_var" ]] || echo "NULL" [[ ! -z "$my_var" ]] && echo "Not NULL" || echo "NULL"
Как найти значение NULL в оболочке, если есть условие в Unix
-N возвращает TRUE, если длина STRING отлична от нуля. Например:
#!/bin/bash var="$1" if [ ! -n "$var" ] then echo "$0 - Error \$var not set or NULL" else echo "\$var set and now starting $0 shell script. " fi
Пример: определить, является ли переменная bash NULL
Следующий скрипт оболочки показывает различные возможности оболочки на основе bash/sh/posix:
#!/bin/bash # Purpose - Test for NULL/empty shell var # Author - Vivek Gite under GPL 2.0+ DEMO="cyberciti.biz" HINT="" ##################################### # Do three possibilities for $DEMO ## ##################################### for i in 1 2 3 do case $i in 1) DEMO="nixcraft.com"; HINT="value set";; 2) DEMO=""; HINT="value set to empty string";; 3) unset DEMO; HINT="\$DEMO unset";; esac ############################################### # Update user with actual values and action # $DEMO set to a non-empty string (1) # $DEMO set to the empty string (2) # $DEMO can be unset (3) ################################################ echo "*** Current value of \$DEMO is '$DEMO' ($HINT) ***" ######################################################################## ## Determine if a bash variable is NULL, set, unset or not set at ALL ## ######################################################################## if [ -z "$" ]; then echo "DEMO is unset or set to the empty string" fi if [ -z "$" ]; then echo "DEMO is unset" fi if [ -z "$" ]; then echo "DEMO is set to the empty string" fi if [ -n "$" ]; then echo "DEMO is set to a non-empty string" fi if [ -n "$" ]; then echo "DEMO is set, possibly to the empty string" fi if [ -n "$" ]; then echo "DEMO is either unset or set to a non-empty string" fi done
Как проверить, что переменная установлена или пуста в bash
П еременная может быть определенной или неопределенной. Если какая-либо переменная не объявлена или объявлена, но не присвоено значение, тогда переменная не установленаили не определена. Когда любая переменная объявляется и ей присваивается значение, тогда переменная устанавливается. Во многих случаях для целей программирования требуется знать, установлена ли конкретная переменная. Одна из важных целей проверки того, установлена ли переменная или нет, — это проверка данных. В Bash нет встроенной функции, как в других стандартных языках программирования, для проверки того, установлена ли переменная. Но в bash есть функция для выполнения этой задачи. Как вы можете проверить, установлена ли переменная в bash, показано в этой статье.
[[ -v variable ]] Or [[ -z variable ]]
Параметр ‘-v’ или ‘-z’ используется для проверки того, установлена или не установлена переменная. Вышеупомянутое логическое выражение вернет true, если переменная установлена, и false, если переменная не установлена или пуста.
Замена параметра — это еще один способ проверить, установлена ли переменная или нет. Если переменная установлена, то значение строки вернется, в противном случае вернется null.
Пример-1: проверьте, установлена или не установлена переменная, используя параметр -z
Создайте файл bash с именем check_var1.sh с помощью следующего скрипта. Здесь первое условие `if` вернет истину и напечатает «Переменная ‘num’ не установлена». В следующем операторе 20 присваивается переменной $Num. Второе условие `if` вернет false, и будет напечатано «Num установлено и значение Num=20».
#!/bin/bash # Проверить, установлена ли переменная if [ -z $ ]; then echo "Переменная 'Num' не установлена" else echo "Переменная 'Num' установлена" fi # Назначить значение Num=20 # Проверить, установлена ли переменная после присвоения значения if [ -z $ ]; then echo "Переменная 'Num' не установлена" else echo "'Num установлено и значение Num=$Num " fi
Пример-2: проверьте, установлена или не установлена переменная, используя замену параметра
Создайте файл bash с именем «check_var2.sh» и добавьте следующий сценарий. Здесь переменной присваивается строковое значение, $str перед проверкой, установлена или не установлена переменная. Условие ‘if’ вернет true, и будет напечатано сообщение «переменная ‘str’ установлена и значение Hello».
#!/bin/bash # Установить переменную str = ”Hello” # Назначить значение “World” для checkval, если переменная str установлена checkval = $ # Проверить, установлена ли переменная, if [ $checkval -eq “World” ]; then echo "переменная 'str' установлена и значение равно $str" else echo "переменная 'str' не установлена" fi
Пример-3: Проверить, что переменная пуста или нет
Создайте файл bash с именем «check_var3.sh» и добавьте следующий сценарий. Сценарий сохранит первый аргумент командной строки в переменной $argv, которая проверяется в следующем операторе. Вывод будет «Первый аргумент является пустым», если аргумент не передан, иначе будет напечатано значение первого аргумента.
#!/bin/sh # Прочитать значение первого аргумента командной строки argv="$1" # Проверить, указано ли значение первого аргумента [ -v "$argv" ] && echo "Первый аргумент является пустым" || echo "Значение первого аргумента равно $argv"
Запустить сценарий без аргументов.
Запустите сценарий с аргументом.
Вывод
В этой статье на различных примерах показаны различные способы проверки того, что переменная установлена, не установлена или пуста. Надеюсь, эта статья поможет пользователям узнать способы тестирования любой переменной bash.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.