什么是[-n" $ VARIABLE" ] ||退出0意味着

时间:2016-07-05 20:31:27

标签: bash shell

在Debian上查看纠正/etc/init.d/hostapd中的问题。但是,我不知道这行代码是做什么的,也不知道它是如何工作的

[ -n "$DAEMON_CONF" ] || exit 0

在网上搜索bash教程时,我从未见过有人这样做

当我运行代码时,我的shell窗口关闭(因为$ DAEMON_CONF未设置为任何内容)。如果我将代码更改为

[ -n "not empty" ] || exit 0

我的控制台窗口没有关闭。

所以,-n的计算结果是真的,或者在退出0的情况下,是什么?

3 个答案:

答案 0 :(得分:5)

如果[]中的表达式返回false,请在||(和exit 0)之后执行该操作。否则,它将短路并且将评估下一个陈述。

答案 1 :(得分:3)

[是命令test的备用名称。您可以通过查看test的联机帮助页来了解参数/标志:

man test

您会看到-n

  

-n STRING

          the length of STRING is nonzero

另外||表示OR。因此,如果test命令返回False,那么||之后的内容将被执行。如果test返回true,则不会执行。

写出你的命令说:“如果变量$ DAEMON_CONF缺少一个值,那么退出并返回代码0”

简写版本就像:

if test ! -n "$DAEMON_CONF"; then
    exit 0
fi

答案 2 :(得分:2)

[ -n "$DAEMON_CONF" ] || exit 0

这是一个不必要的双重否定。这会做同样的事情:

[ -z "$DAEMON_CONF" ] && exit 0

或者可以在没有任何标志的情况下完成:

[ "$DAEMON_CONF" ] || exit 0