Bash HTTPie在通过命令行调用STRAVA脚本时工作,而不是通过crontab



我是shell脚本的新手,我有一个Bash脚本从Strava API中提取数据并使用jq操作/读取它。

当我将第一行代码(调用data的那行)复制并粘贴到命令行中时,它就工作了。当我运行bash strava.sh时,整个程序都工作了。但是当我通过crontab执行程序时,我得到了以下错误:

usage: http [--json] [--form] [--pretty {all,colors,format,none}]
[--style STYLE] [--print WHAT] [--headers] [--body] [--verbose]
[--all] [--history-print WHAT] [--stream] [--output FILE]
[--download] [--continue]
[--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]
[--auth USER[:PASS]] [--auth-type {basic,digest}]
[--proxy PROTOCOL:PROXY_URL] [--follow]
[--max-redirects MAX_REDIRECTS] [--timeout SECONDS]
[--check-status] [--verify VERIFY]
[--ssl {ssl2.3,tls1,tls1.1,tls1.2}] [--cert CERT]
[--cert-key CERT_KEY] [--ignore-stdin] [--help] [--version]
[--traceback] [--default-scheme DEFAULT_SCHEME] [--debug]
[METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
http: error: unrecognized arguments: https://www.strava.com/oauth/token client_id=xxx client_secret=xxx refresh_token=xxx grant_type=refresh_token

下面是我脚本中的行:

access_token=$(http POST "https://www.strava.com/oauth/token" client_id="xxx" client_secret="xxx" refresh_token="xxx" grant_type="refresh_token" | jq -r '.access_token')

当运行crontab时,上面的错误被打印在第一行(即上面给出的行),所以我相当确定问题就在那一行。我做错了什么?

http手册(https://httpie.io/docs/cli/best-practices)建议使用:

--ignore-stdin 

对于"非交互式调用">

可能是路径问题-是否安装了多个http副本?

有没有"%";在你的参数里吗?Crontab将%解释为换行符,所以如果你必须转义它- "%%"。

作为题外话-请将您的子shell放在"s中,以免有一天strava返回类似"AC0f4;rm * 0cd-4b203">

access_token="$( http POST ...

最新更新