什么意味着Linux脚本中的if表达式中的-z值?

And*_*ili 8 linux bash ubuntu if-statement ubuntu-12.04

在这个脚本中我找到了这个if表达式:

if [ -z $1 ]; then
    echo "Usage: createpkg.sh <rev package>"
    exit
else
    CURRENT_VERSION=$1
fi
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法找到这个-z值的确切含义.

从echo的内容我可以$1推断出(可能)变量代表sotware版本.那(也许)-z是一个无效值.因此,如果我执行脚本而不传递给它,我将打包它的软件版本打印我执行脚本的正确程序.

但我不确定-z价值的真正含义.

fed*_*qui 18

来自man test:

   -z STRING
          the length of STRING is zero
Run Code Online (Sandbox Code Playgroud)

所以条件:

if [ -z $1 ]; then
Run Code Online (Sandbox Code Playgroud)

表示"如果变量$ 1为空".哪里$1可能是脚本的第一个参数:如果你执行它./script <parameter1> <parameter2>,那么$1=parameter1,$2=parameter2等等.

  • 您必须检查脚本的执行方式.如果它的名字是"myscript.sh"那么在某个地方你会找到一个调用`./myscript.sh param1 param2 ...`或`/ bin/sh /path/to/myscript.sh param1 param2 ...... (2认同)

dev*_*ull 5

help test 告诉:

String operators:

  -z STRING      True if string is empty.
Run Code Online (Sandbox Code Playgroud)

在您的示例中,Usage: createpkg.sh <rev package>如果未提供参数,脚本将打印并退出。