Curl

嘗試將值從文件循環到 curl 命令

  • March 18, 2022

我什至不確定這是否可能。我正在嘗試創建一個循環,我可以在其中使用文件中的不同值進行捲曲。

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 非常感謝任何幫助。謝謝。

這是我的身份證文件。它基本上是一個數字列表

1761
1762
1763
1764
1765

所以我的最終目標是進入一個循環,第一個 curl 請求將執行 –data-urlencode ‘XXID=1761’ 第二個請求將執行 –data-urlencode ‘XXID=1762’,第三個請求執行 –data-urlencode ’ XXID=1763’ 等

您不能'對變數使用單引號,因為它們之間的任何內容都將被視為文字文本並且不會被 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 的數字,您可以使用 a seqof{..}創建一個數字序列:

for num in {1761..1765}
do
       echo $num
done
for num in $(seq 1761 1765)
do
       echo $num
done

引用自:https://unix.stackexchange.com/questions/695961