Подтвердить что ты не робот

Нулевое и пустое сравнение строк в Unix Bash Shell Script

Я не устанавливаю никаких значений для $pass_tc11; поэтому он возвращает нуль, пока он эхом. как сравнить его в условии if?

Вот мой код. Я не хочу, чтобы "Привет" печатался...

-bash-3.00$ echo $pass_tc11

-bash-3.00$ if [ "pass_tc11" != "" ]; then
> echo "hi"
> fi
hi
-bash-3.00$
4b9b3361

Ответ 1

Прежде всего, обратите внимание, что вы не используете переменную правильно:

if [ "pass_tc11" != "" ]; then
#     ^
#     missing $

В любом случае, чтобы проверить, является ли переменная пустой или нет, вы можете использовать -z → строка пустая:

if [ ! -z "$pass_tc11" ]; then
   echo "hi, I am not empty"
fi

или -n → длина не равна нулю:

if [ -n "$pass_tc11" ]; then
   echo "hi, I am not empty"
fi

От man test:

-z STRING

длина STRING равна нулю

-n STRING

длина STRING не равна нулю

Примеры:

$ [ ! -z "$var" ] && echo "yes"
$

$ var=""
$ [ ! -z "$var" ] && echo "yes"
$

$ var="a"
$ [ ! -z "$var" ] && echo "yes"
yes

$ var="a"
$ [ -n "$var" ] && echo "yes"
yes

Ответ 2

fedorqui имеет рабочее решение, но есть и другой способ сделать то же самое.

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

#!/bin/bash
amIEmpty='Hello'
# This will be true if the variable has a value
if [ $amIEmpty ]; then
    echo 'No, I am not!';
fi

Или проверить, что переменная пуста

#!/bin/bash      
amIEmpty=''
# This will be true if the variable is empty
if [ ! $amIEmpty ]; then
    echo 'Yes I am!';
fi

tldp.org имеет хорошую документацию о том, если в bash:
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html