我有一个包含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命令中使用它
答案 0 :(得分:5)
使用while
构造来读取文件行并将空格分隔的参数作为两个相关变量fqdn
和hostn
:
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。