我正在尝试使用带括号test
和[
的sytax来查看]
。
测试的联机帮助页说明-n
可以用来检查字符串的长度是否为零:
-n STRING
the length of STRING is nonzero
在相反的-z
中可以使用ti检查字符串的长度是否为零:
-z STRING
the length of STRING is zero
要了解test
的工作原理,我创建了一个示例,其中包含长度为零的空变量foo
和长度为1的第二个变量bar
:
$ export foo
$ export bar=1
$ [ -n $bar ] ; echo $?
0
$ [ -n $foo ] ; echo $?
0
$ [ -z $bar ] ; echo $?
1
$ [ -z $foo ] ; echo $?
0
-n
的前两个测试结果显示为零。我建议第一次测试为零,第二次测试为一次。第二次测试显示了建议的结果。
答案 0 :(得分:1)
尝试以下方法:
[ -n "$foo" ] ; echo $?
由于$ foo是一个空字符串,
[ -n $foo ] # without quotes
变为:
[ -n ]
手动测试(1)说:
STRING equivalent to -n STRING
因此[-n]的处理方式与[-n“”]不同,但与[“-n”]
相似