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

by itisgood

Я новичок в скриптах 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 следующий:

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 {htttps://www.cyberciti.biz} 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 "${DEMO}" ]; then
    echo "DEMO is unset or set to the empty string"
fi
if [ -z "${DEMO+set}" ]; then
    echo "DEMO is unset"
fi
if [ -z "${DEMO-unset}" ]; then
    echo "DEMO is set to the empty string"
fi
if [ -n "${DEMO}" ]; then
    echo "DEMO is set to a non-empty string"
fi
if [ -n "${DEMO+set}" ]; then
    echo "DEMO is set, possibly to the empty string"
fi
if [ -n "${DEMO-unset}" ]; then
    echo "DEMO is either unset or set to a non-empty string"
fi
done

 

You may also like

Leave a Comment