2
cd some_dir && php some_crone.php || echo "$? $_" | xargs ./some_handler.php

所以当我从控制台运行这段代码时,我得到了正确的 $? 和 $_

美元?- 退出状态 $_ - 将最后一个参数提供给前一个命令。在 shell 启动时,它给出正在执行的 shell 脚本的绝对文件名。

但是当我把这段代码放到 cronjob 中时:

crontab -e
*/1 * * * * cd some_dir && php some_crone.php || echo "$? $_" | xargs ./some_handler.php

我得到了一个空的$_​​。请帮忙。我不明白有什么问题?

4

1 回答 1

2

通过将以下行添加到您的 crontab 中,将 crontab 的默认 shell 从 /bin/sh 更改为 /bin/bash。

SHELL=/bin/bash
于 2012-07-30T14:02:49.643 回答