特殊文字を含む長いコマンドを複数行コマンドに分割するには?

特殊文字を含む長いコマンドを複数行コマンドに分割するには?

私はgitlabのドキュメントを読みました。

私の場合は特殊文字(コロン「:」)があり、次の内容も読みました。

今私の質問は:この2つを組み合わせる方法は?

一方では、私(引用する):

job name:
  script:
    - |
      for file in *; do
        echo "$file";
        echo "${REPO}/${file}";
      done

一方、私は(引用する):

  script:
    - 'for file in *; do curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "${file}" "${REPO}/${file}"; done'

この2つをどのように組み合わせますか?長期的な解決策は、forループ内のエラーを次のように処理することです。引用する):

    - 'http_code=$(curl -o /dev/null -s -w "%{http_code}" --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "$file" "${REPO}/${file}")'
    - if [ $http_code -ne 201 ]; then echo "Upload failed: terminating" && false; fi;

答え1

variables区間内の特殊文字移動の問題を簡素化しました。 YAMLはまだ動作していますが、これは症状を解決するようです。

job name:
  variables:
    token: "JOB-TOKEN: $CI_JOB_TOKEN"
  script:
    - |
      for file in *; do
        http_code=$(curl -o /dev/null -s -w "%{http_code}" --header "$token" --upload-file "$file" "${REPO}/${file}")
        if [ $http_code -ne 201 ]; then echo "Upload failed for $file" && false; fi;
      done

関連情報