![Cron - crontab 执行一半的 bash 脚本](https://linux22.com/image/11596/Cron%20-%20crontab%20%E6%89%A7%E8%A1%8C%E4%B8%80%E5%8D%8A%E7%9A%84%20bash%20%E8%84%9A%E6%9C%AC.png)
我有一个名为 testScript.sh 的 bash 脚本,如下所示:
#!/bin/bash
curl -X GET https://www.example.com -o ~/Desktop/testFile.json
curl -X POST -d ~/Desktop/testFile.json http://www.example2.com
我想用 crontab 运行这个脚本,所以我用crontab -e
这样的命令编辑了 crontab 文件:
* * * * * ~/Desktop/testScript.sh
奇怪的是,当我像./testScript.sh
使用 pi 用户一样手动运行脚本时,两个curl 命令都执行得很好。当脚本从 crontab 运行时,我看到创建了 testFile,因此第一个curl 命令执行,但curl Post 未执行。我已经做了我的研究,大多数人都说这是环境变量,但我似乎不明白任何答案。
编辑* 我按照@roaima的建议制作了一个日志文件。日志:......无法从文件 testFile.json 中读取数据”,这会产生一个空警告:发布......然后,curl 帖子给了我一个 400 错误请求,因为没有内容要发布1)testFile.json是用第一个curl命令创建的,我在我的机器上本地看到它,我不知道为什么它无法读取它2)如果我这样运行它,脚本仍然可以正常运行。 .sh
答案1
我的问题的答案是由 @meuh 给出的
如果您想
curl
发送文件的内容,而不仅仅是文件名,您将需要-d @filename
但波形符~
不会扩展,因此请使用-d @$HOME/Desktop/testFile.json