如何在文件的curl命令数据中使用?

时间:2016-07-19 08:12:16

标签: bash curl

我有一个包含fqdn和hostname变量的文本文件。文件看起来像这样

first_fqnd    first_hostname
second_fqdn     second_hostname
.....      .....

我必须在bash脚本中使用curl更新一些数据,但我必须从这个文本文件中获取fqdn和hostname,并为每对fqdn和hostname创建一个curl。

我的卷发应该是这样的:

curl -H "Content-Type:application/json" -XPUT "https://pup.pnet.pl/api/hosts/**fqdn from file**" -d '{"host":{"name": "**hostname from file**"}}' --cacert bundle.pem --cert xxx-pem.cer --key xxx-privkey.pem

如何将这些变量从文件传递给curl?我考虑过使用awk,但我不知道如何在curl命令中使用它

2 个答案:

答案 0 :(得分:5)

使用while构造来读取文件行并将空格分隔的参数作为两个相关变量fqdnhostn

while read fqdn hostn; do
    curl -H .... -XPUT "https://pup.pnet.pl/api/hosts/${fqdn}" \
      -d '{"host":{"name": "'"${hostn}"'"}}' --cacert ....; done <file.txt

答案 1 :(得分:2)

尝试这样的事情:

#!/bin/bash

while read fqdn hostname; do
    curl -H "Content-Type:application/json" -XPUT \
        "https://pup.pnet.pl/api/hosts/${fqdn}" \
        -d '{"host":{"name": "'${hostname}'}}' --cacert bundle.pem \
        --cert xxx-pem.cer --key xxx-privkey.pem
done <input_file.txt

while read fqdn hostname将逐行接收标准输入的输入,将Bash的内部字段分隔符拆分为&#34;列&#34;变量$fqdn$hostname。有关详细信息,请参阅Catching User Input