Shell脚本:-z和-n选项以及if


53

我有一个shell脚本,其中有以下行if [ -z "$xyz" ]if [ -n "$abc" ],但我不确定它们的用途是什么。谁能解释一下?

Answers:


62

你可以找到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

3

man testman [将为您提供测试命令的所有选项。在这种情况下,-n测试以查看$ abc的内容是否具有非零长度,而-z测试以查看$ xyz的内容是否为零长度字符串。


man [在GNU bash 4.1.2(1)-发行版(x86_64-redhat-linux-gnu)中不适用于我。但是人测试+1。
安德鲁·洛里安(Andrew lorien)

1
注意man test(总是?)提供了外部程序版本的手册页,该手册页(至少对于GNU-coreutils版本)明确警告某些(大多数IME)外壳程序的内置版本可能有所不同。
dave_thompson_085
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.