Bash [-n“VARIABLE”是什么意思
查看如何更正Debian上/etc/init.d/hostapd中的一个问题。然而,我不知道这行代码是做什么的,也不知道它是如何工作的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表示“或”,这是什么?
[ -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