ファイルの値をカールコマンドで繰り返してみてください。

ファイルの値をカールコマンドで繰り返してみてください。

これが可能かどうかはわかりません。ファイル内の異なる値を使用してカールできるループを作成しようとしています。

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

だから私の最終目標は、最初のカールリクエストが --data-urlencode 'XXID = 1761'を実行し、2番目のリクエストが --data-urlencode 'XXID = 1762'を実行し、3番目のリクエストが --dataを実行するループを入力することです。 -urlencode 'XXID=1763'など

答え1

'変数間のすべての内容はリテラルテキストとして扱われ、シェルでは拡張されないため、変数に一重引用符を使用することはできません。代わりに二重引用符を使用してください"

また、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

関連情報