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.shpiユーザーでスクリプトを手動で実行すると、両方のカールコマンドが正常に実行されることです。 crontabでスクリプトを実行するとtestFileが生成され、最初のカールコマンドは実行されますが、カールポストは実行されないことがわかります。私は研究をしてきましたが、ほとんどの人はそれが環境変数であると言いますが、答えは理解できないようです。

編集* @roaimaの提案に従ってログファイルを作成しました。ログ: ...unable to read data from file testFile.json" これは空の警告を生成します。 jsonが生成されます。最初のカールコマンドを使用すると、私のコンピュータでローカルで見ることができますが、なぜ読めないのかわかりません。

答え1

私の質問に対する答えは@meuhによって提供されました。

ファイル名だけでなくファイルの内容を送信するにはcurlチルダが必要-d @filenameですが、チルダは~拡張されません。-d @$HOME/Desktop/testFile.json

関連情報