在 CURL GET 中使用变量

Use Variable in CURL GET

我觉得我只是遗漏了一些非常愚蠢的东西,而不是 quoting/escaping 我应该遗漏的东西,但我已经阅读和测试了很长时间,但就是无法理解上班。

我有一个包含如下数据的 CSV 文件:

TESTING.csv

17A3120UAXF-AA002771,9911017093
S150Y52157201,9911008933
17A3120UAXF-AA004545,9911016519
S170Y13084226,9911024365
S160Y45021270,9911018486

对于脚本的第一部分,我需要读取第二个变量(即以“99110...”开头的项目)

我正在将此数据解析为 CURL while 循环以对文件中的所有行进行排序。我的 bash 脚本此时如下所示:

#!/bin/bash

while IFS=, read -r device account; do
echo "device : $device"
echo "account : $account"
curl -X GET --header "Content-Type: application/json" --user username:password --verbose 'https://www.website.com:8444/api/subscriber?account=$account'
done < TESTING.csv

我 运行 遇到的问题是,虽然 "echo" 语句能够正确 pull/show 我想要传递的变量,但同样的信息没有被传递到我的 CURL 命令中。当我 运行 我的脚本时,输出如下所示:

device : 17A3120UAXF-AA002771
account : 9911017093
* About to connect() to www.website.com port 8444 (#0)
*   Trying 8.8.8.8...
* Connected to www.website.com (8.8.8.8) port 8444 (#0)
* Server auth using Basic with user 'username'
> GET /api/subscriber?account=$account HTTP/1.1
> Authorization: Basic madeUpJunkAndNumbers12345==
> User-Agent: curl/7.29.0
> Host: www.website.com:8444
> Accept: */*
> Content-Type: application/json
>
< HTTP/1.1 404 Not Found
< Content-Type: application/json
< Content-Length: 0
<
* Connection #0 to host www.website.com left intact
^C

您在 URL 中使用了单引号,因此变量不会展开。使用双引号:

curl -X GET --header "Content-Type: application/json" --user username:password --verbose "https://www.website.com:8444/api/subscriber?account=$account"