在curl URL shell脚本

时间:2018-01-24 19:22:43

标签: bash shell api csv curl

我正在尝试遍历csv文件中的列中的单元格,并将每个单元格指定为变量。然后,我想将该变量放入URL中,以便将csv中的单元格放入url中。当我运行脚本时,它会给出错误:" curl:(3)在URL&#34中找到非法字符;

#!/bin/bash

IFS=,

cat /Users/User/Desktop/hardwares_2018-01-23_11-02-05.csv | while read id



temp=`echo $id | sed 's/"//g'`
#echo $temp

do

curl -H "X-Application-Authorization: Bearer Token" -H 'Accept: application/vnd.application.v2.1+xml' -X DELETE https://api.application.com/hardwares/${temp}.xml



done

我的csv文件看起来像这样

1945603
1945604
1945605
1945606
1945607
1945608
1945609
1945610
1945611
1945612

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

我认为你想要'做'在阅读ID之后立即进行指导'部分,而不是现在的位置。

答案 1 :(得分:0)

我认为问题出现在第一个标题-H标志中。它在字符串中有空格,可能被解释为curl的另一个参数。

这里我对脚本进行了一些通用的修改。我没有环境来测试它。希望它有所帮助。

$ cat test.sh
#!/bin/bash

h1flag="'X-Application-Authorization: Bearer Token'"
h2flag="'Accept: application/vnd.application.v2.1+xml'"
reqflag="DELETE"
baseurl="https://api.application.com/hardwares"
while read -r id
do
    curl --verbose -H "${h1flag}" -H "${h2flag}" -X "${reqflag}" "${baseurl}/$id" 
done < input.csv

上面的示例行如下所示,

$ curl --verbose \
  -H 'X-Application-Authorization: Bearer Token' \
  -H 'Accept: application/vnd.application.v2.1+xml' \
  -X DELETE https://api.application.com/hardwares/1945603

我建议先使用cmdline在使用脚本运行它之前使用它。