if [ -z "$xyz" ]
和if [ -n "$abc" ]
,但是我不确定它们的用途是什么。有人可以解释吗?#1 楼
您可以在这里找到有关bash运算符的很好的参考。如果您使用其他外壳,只需搜索<my shell> operators
,您将找到所需的一切。在您的特定情况下,您将使用:-n
string is not null.
-z
string is null, that is, has zero length
来说明:
$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null
#2 楼
man test
或man [
将为您提供测试命令的所有选项。在这种情况下,-n测试以查看$ abc的内容是否具有非零长度,而-z测试以查看$ xyz的内容是否为零长度字符串。评论
man [在GNU bash版本4.1.2(1)-发行版(x86_64-redhat-linux-gnu)中对我不起作用。但是对人测试+1。
– andrew lorien
17 Mar 8 '17 at 0:03
注意man test(总是吗?)提供了外部程序版本的手册页,该手册页(至少对于GNU-coreutils版本)明确警告某些(大多数IME)shell的内置版本可能有所不同。
–dave_thompson_085
17年8月7日在9:16
评论
如果您无法使-n正常工作,那可能是因为您遵循了网络上一些不好的指南(例如GeeksforGeeks或TutorialsPoint),但没有引用变量。该答案以及此处链接的指南均正确引用了该答案。如果您使用-n而不引用,它将告诉您即使是也不是空的! @terdon,非常感谢!
–法比奥说恢复莫妮卡
20-10-24在6:01