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
我得到一个空的$ _。 请帮忙。我无法理解是什么问题?
答案 0 :(得分:2)
将crontab的默认shell从/ bin / sh更改为/ bin / bash,方法是在crontab中添加以下行。
SHELL=/bin/bash