Ответ 1
Конечно, да. После замены переменной он читает [ !-z ]
, что не является допустимой командой [
. Используйте двойные кавычки или [[
.
if [ ! -z "$errorstatus" ]
if [[ ! -z $errorstatus ]]
Как убедиться, что переменная не пуста с параметром -z
?
errorstatus="notnull"
if [ !-z $errorstatus ]
then
echo "string is not null"
fi
Он возвращает ошибку:
./test: line 2: [: !-z: unary operator expected
Конечно, да. После замены переменной он читает [ !-z ]
, что не является допустимой командой [
. Используйте двойные кавычки или [[
.
if [ ! -z "$errorstatus" ]
if [[ ! -z $errorstatus ]]
Почему вы используете -z? Чтобы проверить, является ли строка непустой, вы обычно используете -n:
if test -n "$errorstatus"; then echo errorstatus is not empty fi
Я думаю, что это синтаксис, который вы ищете:
if [ -z != $errorstatus ]
then
commands
else
commands
fi