Shell脚本变量不为空(-z选项)

Sre*_*raj 54 shell

如何通过选项确保变量不为-z

errorstatus="notnull"
if [ !-z $errorstatus ]
then
   echo "string is not null"
fi
Run Code Online (Sandbox Code Playgroud)

它返回错误:

./test: line 2: [: !-z: unary operator expected
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 84

当然可以.替换变量后,它会读取[ !-z ],这不是有效的[命令.使用双引号,或[[.

if [ ! -z "$errorstatus" ]

if [[ ! -z $errorstatus ]]
Run Code Online (Sandbox Code Playgroud)


Wil*_*ell 26

你为什么要用-z?要测试字符串是否为非空,通常使用-n:

if test -n "$errorstatus"; then
  echo errorstatus is not empty
fi

  • 当$ 1为空时,@ jtsnake`test -n $ 1`为真,因为它等同于`test -n`,这是真的,因为字符串`-n`是非空的.(例如,`-n`不是一个选项,而是测试评估的字符串.)`test -n"$ 1"`工作正常. (3认同)