如何使用带有非零标志 -n 的测试
How to use test with the nonzero flag -n
我正在尝试使用带括号 [
和 ]
.
的语法检查 test
test 的联机帮助页说 -n
可用于检查字符串的长度是否不为零:
-n STRING
the length of STRING is nonzero
相反,-z
可以用来检查字符串的长度是否为零:
-z STRING
the length of STRING is zero
为了理解 test
的工作原理,我创建了一个示例,其中包含一个长度为零的空变量 foo
和一个长度为一的第二个变量 bar
:
$ export foo
$ export bar=1
$ [ -n $bar ] ; echo $?
0
$ [ -n $foo ] ; echo $?
0
$ [ -z $bar ] ; echo $?
1
$ [ -z $foo ] ; echo $?
0
-n
的前两个测试结果均显示为零。我建议第一个测试为零,第二个为一个。第二个测试显示了建议的结果。
尝试以下操作:
[ -n "$foo" ] ; echo $?
由于 $foo 是一个空字符串,
[ -n $foo ] # without quotes
变成:
[ -n ]
手动测试(1) 说:
STRING equivalent to -n STRING
所以 [-n] 不像 [-n "" ],而是像 [ "-n" ]
我正在尝试使用带括号 [
和 ]
.
test
test 的联机帮助页说 -n
可用于检查字符串的长度是否不为零:
-n STRING
the length of STRING is nonzero
相反,-z
可以用来检查字符串的长度是否为零:
-z STRING
the length of STRING is zero
为了理解 test
的工作原理,我创建了一个示例,其中包含一个长度为零的空变量 foo
和一个长度为一的第二个变量 bar
:
$ export foo
$ export bar=1
$ [ -n $bar ] ; echo $?
0
$ [ -n $foo ] ; echo $?
0
$ [ -z $bar ] ; echo $?
1
$ [ -z $foo ] ; echo $?
0
-n
的前两个测试结果均显示为零。我建议第一个测试为零,第二个为一个。第二个测试显示了建议的结果。
尝试以下操作:
[ -n "$foo" ] ; echo $?
由于 $foo 是一个空字符串,
[ -n $foo ] # without quotes
变成:
[ -n ]
手动测试(1) 说:
STRING equivalent to -n STRING
所以 [-n] 不像 [-n "" ],而是像 [ "-n" ]