我什至不确定这是否可能。我正在尝试创建一个循环,在其中我可以使用文件中的不同值进行卷曲。
for i in `cat id`;
do curl -X POST 'https:/myurl \
--header 'X-XX-Authorization: XX' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'ACS-Licensing-Ack: XXXX' \
--header 'Authorization: Bearer XXXXX' \
--data-urlencode 'XXID=`find * -name $i`'
done
我得到回应
{"code":"400-bad-request","message":"XX app with ID `find * -name $i` not found"}
如何将我之前捕获的 $i 的值放入 --data-urlencode 字段中?我的 id 文件非常简单,它包含一些数字,如下所示。 1234 23232 32323 非常感谢任何帮助。谢谢。
这是我的 ID 文件。它基本上是一个数字列表
1761
1762
1763
1764
1765
所以我的最终目标是进入一个循环,其中第一个curl请求将进行 --data-urlencode 'XXID=1761' 第二个请求将进行 --data-urlencode 'XXID=1762',第三个请求将进行 --data-urlencode ' XXID=1763' 等
答案1
您不能对变量使用单引号,'
因为它们之间的任何内容都将被视为文字文本,并且不会被 shell 扩展。而是使用双引号"
。
也是find
一个搜索文件的实用程序,而不是在文件。
以下应该有效:
#!/bin/bash
for line in $(cat ./id)
do
curl -X POST 'https:/myurla \
--header 'X-XX-Authorization: XX' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'ACS-Licensing-Ack: XXXX' \
--header 'Authorization: Bearer XXXXX' \
--data-urlencode XXID="$line"
done
如果你的id
文件只包含一个每行加 1 的数字,你可以使用 of 来seq
创建{..}
一个数字序列:
for num in {1761..1765}
do
echo $num
done
for num in $(seq 1761 1765)
do
echo $num
done