可能是重复问题:
bash:双括号、单括号、括号和花括号
查看archlinux中的rc.d
cron脚本:
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
name=crond
. /etc/conf.d/crond
PID=$(pidof -o %PPID /usr/sbin/crond)
case "$1" in
start)
stat_busy "Starting $name daemon"
[[ -z "$PID" ]] && /usr/sbin/crond $CRONDARGS &>/dev/null \
&& { add_daemon $name; stat_done; } \
|| { stat_fail; exit 1; }
;;
虽然我了解大部分的语法,但是这个代码真的是令人难以理解:
[[ -z "$PID" ]]
我看到这样写:
[ -z "$PID" ]
我在参考资料中发现[]
在if语句中被使用,但我在这里看不到。非常感谢您的帮助。谢谢!
if [ expression ];
和if test expression;
是相同的。如果您使用[
而不是test
,则需要将右括号作为最后一个参数。此外,test
/[
也都内置于bash
中。 - chepner-z
?它是做什么的? - Andriy Drozdyuktest -z
用于判断作为参数传递的字符串是否为空。 - Charles Duffy