Bash和curl脚本问题

时间:2018-07-16 17:22:49

标签: bash curl

我正在尝试在bash脚本中包含这个curl命令(到Dropbox审核api):

curl -X POST https://api.dropboxapi.com/2/team_log/get_events --header 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXX' --header 'Content-Type: application/json' --data '{"time":{"start_time":"2018-07-16T18:07:56Z"}}'

我已将auth令牌替换为XXXXX等。

在我的脚本中,时间戳实际上是一个名为$ LAST的变量。

我建立如下的curl命令:

LAST=$(date +"%Y-%m-%dT%H:%m:%SZ")

DROPBOX1=$(echo 'curl -X POST https://api.dropboxapi.com/2/team_log/get_events --header '\''Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXX'\'' --header '\''Content-Type: application/json'\'' --data '\''{"time":{"start_time":"')

DROPBOX2=$(echo '"}}'\''')

CURLSTRING=$DROPBOX1$LAST$DROPBOX2

echo $CURLSTRING
$CURLSTRING 

我以这种方式构建它,否则由于curl POST中的所有单引号和双引号,$ LAST是有问题的。

运行该小脚本将给出以下输出:

curl -X POST https://api.dropboxapi.com/2/team_log/get_events --header 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXX' --header 'Content-Type: application/json' --data '{"time":{"start_time":"2018-07-16T18:07:56Z"}}'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100   175    0   127  100    48    232     87 --:--:-- --:--:-- --:--:--   231
curl: (6) Could not resolve host: Bearer
curl: (6) Could not resolve host: XXXXXXXXXXXXXXXXXXXXXXXXX'
curl: (6) Could not resolve host: application

可以看出,脚本中的echo命令显示了看起来是完全有效的curl命令-确实,如果我将输出剪切并传递到命令行,它将起作用。但是,如输出的其余部分在bash脚本本身中所示,curl命令未正确解释。

我无法为自己的生活弄清楚为什么会这样。显然,echo正确地保留了字符串,而curl命令则以某种方式破坏了$ CURLSTRING。我显然不能正确地使用单引号和双引号的某种组合,但是尚不清楚中断的地方。

谢谢

Rob

0 个答案:

没有答案