可能重复:
bash:双括号或单括号,括号,花括号
查看rc.d
archlinux 中的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; }
;;
Run Code Online (Sandbox Code Playgroud)
虽然我可以弄清楚大部分语法,但它的作用是什么:
[[ -z "$PID" ]]
Run Code Online (Sandbox Code Playgroud)
我看到它也写成:
[ -z "$PID" ]
Run Code Online (Sandbox Code Playgroud)
在参考文献中我发现它[]
在if语句中使用,但我在这里没有看到.任何帮助深表感谢.谢谢!
open括号([)是test命令的别名,它执行所有测试并返回0表示true或其他表示false."if"仅对测试命令的返回值作出反应.结束括号告诉test表达式结束的位置.双括号([[)是一个内置的bash,可以替换外部调用来测试.
单个括号模拟/usr/bin/test
,一个旧的Unix实用程序.他们做你要求的,但不是你想要的.双括号是改进,是Bash特有的.
http://tldp.org/LDP/abs/html/testconstructs.html#DBLBRACKETS
存在一个名为[(左括号特殊字符)的专用命令.它是
test
效率的同义词,也是出于效率原因而构建的.此命令将其参数视为比较表达式或文件测试,并返回与比较结果对应的退出状态(0表示true,1表示false).在版本2.02中,Bash引入了[[...]]扩展测试命令,该命令以对其他语言的程序员更熟悉的方式执行比较.请注意[[是关键字,而不是命令.
在[[和]]之间没有文件名扩展或分词,但有参数扩展和命令替换.
使用[[...]]测试构造,而不是[...]可以防止脚本中的许多逻辑错误.例如,尽管在[]构造中给出了错误,但&&,||,<和>运算符在[[]]测试中工作.
归档时间: |
|
查看次数: |
4686 次 |
最近记录: |