0

这可以解释吗:

[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

(/etc/logrotate.d/nginx 的内容)?

为什么这不像

[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`

因为我们不应该只在 nginx.pid 文件存在时才发送信号吗?如果 pid 不存在,那么 nginx 没有运行,我们不能向主进程发送信号?

4

1 回答 1

1

这两个语句执行相同的功能,但具有不同的退出代码。

[ ! condition ] || action
[ condition ] && action

仅当条件为真时,这两个语句才会执行操作。唯一的选择是在条件为假时执行操作。

如果条件为真,则整个语句的退出代码就是动作的退出代码。

条件为false 时,两个语句的退出代码不同,因为它是[ ... ]元素的退出代码。

于 2016-10-26T08:40:17.580 回答