Bash [-n“VARIABLE”是什么意思

Bash [-n“VARIABLE”是什么意思,bash,shell,Bash,Shell,查看如何更正Debian上/etc/init.d/hostapd中的一个问题。然而,我不知道这行代码是做什么的,也不知道它是如何工作的 [ -n "$DAEMON_CONF" ] || exit 0 在网上搜索bash教程时,我从未见过有人这样做 当我运行代码时,shell窗口关闭(因为$DAEMON_CONF没有设置为任何值)。如果我把代码改成 [ -n "not empty" ] || exit 0 我的控制台窗口没有关闭 因此,-n的计算结果为true,并用退出0表示“或”,这是什么?

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

[ -n "$DAEMON_CONF" ] || exit 0
在网上搜索bash教程时,我从未见过有人这样做

当我运行代码时,shell窗口关闭(因为$DAEMON_CONF没有设置为任何值)。如果我把代码改成

[ -n "not empty" ] || exit 0
我的控制台窗口没有关闭


因此,-n的计算结果为true,并用退出0表示“或”,这是什么?

如果
[]
中的表达式返回false,请在或之后执行操作(和
退出0
)。否则,它将短路,并将计算下一条语句。

[
是命令的替代名称
test
。您可以通过查看test的手册页了解参数/标志等内容:

man test
您将看到
-n

-n字符串

          the length of STRING is nonzero
此外,如果
test
命令返回
False
,那么
后面的内容将被执行。如果
test
返回true,那么它将不被执行

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

正手版本类似于:

if test ! -n "$DAEMON_CONF"; then
    exit 0
fi
这是不必要的双重否定。这会做同样的事情:

[ -z "$DAEMON_CONF" ] && exit 0
也可以在没有任何标志的情况下进行:


当某个进程将错误返回到静默状态时,有一种破解方法是使用true进行oring。因此,这
| | whatever
意味着始终执行的内容,如果留给双管符号的内容的“结果”求值为false,用shell术语来说,是一个失败的退出代码…@ElliotFrisch将其放在了更好的位置words@MarcB谢谢你的文档链接!
[ -z "$DAEMON_CONF" ] && exit 0
[ "$DAEMON_CONF" ] || exit 0