curlコマンドはシェルスクリプトを使用してユーザー入力を受け取り、動的に呼び出すことはできません。

curlコマンドはシェルスクリプトを使用してユーザー入力を受け取り、動的に呼び出すことはできません。

以下のようなカールコマンドが欲しい

curl --location --request POST 'https://abcd.com/api/v4/projects/<projectId>/triggers' \
--header 'PRIVATE-TOKEN: <your_access_token>' \
--form 'description="my description"'

これで、動的に生成するシェルスクリプト関数を作成しました。

PramterとしてprojectId、トークン、説明が必要です。

callApi(){
while IFS="," read -r -a users; do
for u in "${users[@]}"
do
url="'https://abcd.com/api/v4/projects/$1/triggers'"
echo $url

header="'PRIVATE-TOKEN: $2'"
echo $header

desc="'description=$u token'"
echo $desc

tk=$(curl --location --request POST $url \
--header $header \
--form $desc)

echo $tk

done
done <<< $(cat $3)
}


callApi "<projectId>" "<token>" ./users.csv

完全にエコーされますが、エラーが発生します。

答え1

承認された回答を見る変数に保存されたコマンドをどのように実行できますか?

これらの問題に直面する理由は単語分割によるものであり、変数で拡張された引用符は引用符として機能せず、通常の文字としてのみ機能します。

カールコマンドを作成するときは、通常、次の形式に従い、各部分を配列に割り当てます。

    url_request=("https://abcd.com/api/v4/projects/$1/triggers")
    url_body=(--form "$desac")
    url_header=(--header "PRIVATE-TOKEN: $2")
    url+=("${url_request[@]}" "${url_body[@]}" "${url_header[@]}")

    response=$(curl -s "${url[@]}")

関連情報