如何将包含特殊字符的长命令拆分为多行命令?

如何将包含特殊字符的长命令拆分为多行命令?

我一直在阅读 gitlab 的文档:

就我而言,我有一个特殊字符(冒号“:”),所以我也阅读了:

现在我的问题是:如何将两者结合起来?

一方面我有(参考):

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'

我如何将两者结合起来?长期解决方案是将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

相关内容