-z 标志在这里意味着什么

-z 标志在这里意味着什么

-z下面代码中的标志是什么意思:

if [ -z $TEST_PARAM ]; then

有这样的标志的列表吗?

对于像这样的标志ls -l,我知道在哪里可以找到它,但是对于单个标志,我没有得到任何描述它的网站。

答案1

-z STRING 方法:

STRING 的长度为零

您可以使用以下命令查看所有这些内容的列表man test

[是命令的别名test,尽管在实践中通常由 shell 实现。不过,你可能有一个/bin/[。所有这些-X测试都是test.

答案2

[是该实用程序的另一个名称test。它们之间的唯一区别是最后[需要一个额外的参数。]大多数系统都有一个[手册页,其内容与test手册页相同。

大多数 shell 都具有内置[功能test,因此手册页中描述的确切功能可能与 shell 中实际可用的功能略有不同。-z不过,这是所有实现中都可用的标准功能。查找test内置函数的描述或有关条件表达式的部分,以查找诸如 之类的运算符-z

该命令[ -z $TEST_PARAM ]实际上应该是[ -z "$TEST_PARAM" ],因为双引号外的变量扩展的作用远远大于扩展变量。看为什么我的 shell 脚本会因为空格或其他特殊字符而卡住?更多细节。如果没有引号, 的值TEST_PARAM将被拆分为单词,这些单词将扩展为全局模式。相反,"$TEST_PARAM"扩展为变量的值TEST_PARAM。如果 的值为TEST_PARAM空,则 then$TEST_PARAM扩展为零字列表,因此执行的命令为[ -z ]。仅用一个单词来表达条件表达式,如果该单词非空,则条件为真。这里-z不是一个运算符而是一些非空字符串。

也可以看看使用单括号或双括号 - bash

答案3

它的意思是“如果参数不存在,则执行以下操作”。

您可以通过以下方式查看:

$ ABC='1'                                                                                     
$ 
$ if [ -z $ABC ]; then echo "ABC"; # Nothing
fi;                                                          
$
$ if [ -z $XYZ ]; then echo "yes"; # echo "Yes"
fi;                                                         
yes
$

我使用它的一个例子是在我的.bashrc文件中调用tmux,但不是递归的,如下所示:

[ -z $TMUX ] && export TERM=xterm-256color && exec tmux

相关内容