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