尝试将文件中的值循环到curl命令中

尝试将文件中的值循环到curl命令中

我什至不确定这是否可能。我正在尝试创建一个循环,在其中我可以使用文件中的不同值进行卷曲。

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

相关内容