Bash运算符:“!"相对于"-z" [英] Bash operators: "!" vs "-z"
问题描述
运算符!"之间有什么区别?和"-z"应用于字符串?
What is the difference between the operator "!" and "-z" applied to a string?
#Example 1
if [ ! STRING ]; then ...
#Example 2
if [ -z STRING ]; then ...
谢谢
推荐答案
首先,您使用单个方括号.这意味着您正在使用test
命令,而不是Bash-builtin函数.从手册中:
First of all you make use of single brackets. This implies that you are using the test
command and not the Bash-builtin function. From the manual :
test EXPRESSION
或[ EXPRESSION ]
:此退出以EXPRESSION
! EXPRESSION
::test
返回EXPRESSION
的 true 是 false
-z STRING
::如果STRING
的长度为零,则test
返回 true .
-z STRING
: test
returns true if the length of STRING
is zero.
示例:
$ [ -z "foo" ] && echo "zero length" || echo "non-zero length"
non-zero length
$ [ ! -z "foo" ] && echo "non-zero length" || echo "zero length"
non-zero length
$ [ -z "" ] && echo "zero length" || echo "non-zero length"
zero length
$ [ ! -z "" ] && echo "non-zero length" || echo "zero length"
zero length
但是现在您想知道[ ! STRING ]
:
手册指出[ STRING ]
等同于[ -n STRING ]
,它测试STRING
是否具有非零长度.因此[ ! STRING ]
等效于[ -z STRING ]
.
The manual states that [ STRING ]
is equivalent to [ -n STRING ]
, which tests if STRING
has a non-zero length. Thus [ ! STRING ]
is equivalent to [ -z STRING ]
.
-n STRING
::STRING
的长度不为零.
-n STRING
: the length ofSTRING
is nonzero.
STRING
:等同于-n STRING
来源:man test
答案: [ ! STRING ]
等同于[ -z STRING ]
answer:[ ! STRING ]
is equivalent to [ -z STRING ]
这篇关于Bash运算符:“!"相对于"-z"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!