forループと配列でこのシェルスクリプトを使用する方法。 Sonarqube品質ゲート生成条件を生成するためにforループ呼び出しを使用したいと思います。例:
#!/bin/bash --login
echo "Creating SonarQube Gateway Condition"
QG_ID=$(cat qualitygate.json | jq -r ".id")
Gateway="curl -u ${USERNAME}:${PASSWORD} -k -X POST "${SONAR_HOST_URL}/api/qualitygates/create_condition?"
declare -a gateMetrics=("gateId=$QG_ID&metric=coverage&op=LT&error=80\"" "gateId=$QG_ID&metric=duplicated_lines_density&op=GT&error=10\"")
for val in "${gateMetrics[@]}"
do
echo $Gateway$val
done
上記のコマンドを実行した後、次の出力が必要です。
curl -u ${USERNAME}:${PASSWORD} -k -X POST "${SONAR_HOST_URL}/api/qualitygates/create_condition?gateId=$QG_ID&metric=coverage&op=LT&error=80"
ベストアンサー1
より小さな部分に分けることができます。
#!/bin/bash --login
echo "Creating SonarQube Gateway Condition"
curl_cmd=( curl -u "${USERNAME}:${PASSWORD}" -k -X POST )
url="${SONAR_HOST_URL}/api/qualitygates/create_condition"
qg_id=$( jq -r ".id" qualitygate.json )
gateMetrics=(
coverage,LT,80
duplicated_lines_density,GT,10
)
query_fmt="gateId=%s&metric=%s&op=%s&error=%s"
for metric in "${gateMetrics[@]}"; do
IFS=, read -r m o e <<< "$metric"
printf -v query "$query_fmt" "$qg_id" "$m" "$o" "$e"
# remove this echo if it looks OK
echo "${curl_cmd[@]}" "${url}?${query}"
done