Cron - crontab 执行一半的 bash 脚本

Cron - crontab 执行一半的 bash 脚本

我有一个名为 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

相关内容