为什么curl在cron的shell脚本中运行时不生成输出?

为什么curl在cron的shell脚本中运行时不生成输出?,shell,curl,cron,crontab,Shell,Curl,Cron,Crontab,我在~/.bin/shellScript中有一个用于从某些服务器获取数据的shell脚本: OLD="$(curl --silent http://someServer:12345/stats.json | json someKey)" NEW="$(curl --silent http://otherServer:12345/stats.json | json someKey") echo "OLD $OLD - NEW $NEW" 我想以交互方式回显运行它的结果,但我也一直想记录收集到的

我在
~/.bin/shellScript
中有一个用于从某些服务器获取数据的shell脚本:

OLD="$(curl --silent http://someServer:12345/stats.json | json someKey)"
NEW="$(curl --silent http://otherServer:12345/stats.json | json someKey")

echo "OLD $OLD - NEW $NEW"
我想以交互方式回显运行它的结果,但我也一直想记录收集到的结果。 因此
crontab-e
,并添加
*/5****/home/user/.bin/shellScript>/media/dump/scriptDump


以交互方式运行脚本效果很好-我得到了
OLD 123-NEW 456
,但是当我查看从cron运行的内容时,我得到了
OLD-NEW
,没有使用curl抓取数据。

正如在注释中发现的那样,在调用它时需要添加
json
的完整路径。这是因为crontab的环境有限

所以不是

OLD="$(curl --silent http://someServer:12345/stats.json | json someKey)"
NEW="$(curl --silent http://otherServer:12345/stats.json | json someKey")
一定是这样

OLD="$(curl --silent http://someServer:12345/stats.json  | /path/to/json someKey)"
NEW="$(curl --silent http://otherServer:12345/stats.json | /path/to/json someKey)"
                                                           ^^^^^^^^^^^^^
[[注意,您的第二行有
而不是
)“
]]


否则,您还可以将
json
路径添加到crontab中,如所示:


如果在
json someKey
上添加
json
的完整路径会怎么样?Crontab doe在有限的环境中工作,某些路径可能会丢失,因此您需要对其进行全面介绍。我从未想过需要在shellscript中修复$PATH(尽管我知道cron的环境有限)/这总是发生在我们所有人身上,没问题。那么这是否意味着现在它对你起作用了?是的。如果你这样回答,我会接受的。干杯
PATH=/usr/local/sbin: ... :/path/of/json