在Debian上查看纠正/etc/init.d/hostapd中的问题。但是,我不知道这行代码是做什么的,也不知道它是如何工作的
[ -n "$DAEMON_CONF" ] || exit 0
在网上搜索bash教程时,我从未见过有人这样做
当我运行代码时,我的shell窗口关闭(因为$ DAEMON_CONF未设置为任何内容)。如果我将代码更改为
[ -n "not empty" ] || exit 0
我的控制台窗口没有关闭。
所以,-n的计算结果是真的,或者在退出0的情况下,是什么?
答案 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