![shell 脚本在命令行上可以正常执行,但不能从 cron 作业中执行](https://linux22.com/image/536269/shell%20%E8%84%9A%E6%9C%AC%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%8A%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%B8%B8%E6%89%A7%E8%A1%8C%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BD%E4%BB%8E%20cron%20%E4%BD%9C%E4%B8%9A%E4%B8%AD%E6%89%A7%E8%A1%8C.png)
我有一个非常简单的一行 update_pot.sh
find . -iname "*.php" | xargs xgettext -olocale/messages.pot --from-code=UTF-8 -j
如果从提示符运行 ./update_pot.sh,它可以工作。但是当我从 cron 作业调用时,它会返回
xgettext: no input file given
Try `xgettext --help' for more information.
我尝试将 #! /bin/sh 放在第一行,但没有变化。
答案1
它可能从错误的目录运行。将 放在cd
脚本开头的正确目录中,或将 更改find
为使用绝对路径。
答案2
我总是在没有环境的情况下尝试相同的命令
env - find . -iname "*.php" | xargs xgettext -olocale/messages.pot --from-code=UTF-8 -j
但 Cakemox 是对的 - 你应该指定要查找的路径