首页 > 解决方案 > Azure DevOps 管道:参数中的反斜杠 - 它们是否需要转义以及如何转义?

问题描述

我正在使用管道模板并有一些字符串运行时参数,这些参数将是文件系统路径并且它们包含反斜杠,我正在回显它们以测试模板管道并尝试了所有可能的方法

回显所有这些不同的字符串从不显示反斜杠,在我看来这不是日志显示问题(访问原始日志我从来没有看到一个反斜杠,但是我通过了路径)。

这是我的简单管道模板,用于测试我在做什么

parameters:
- name: string1
  type: string
  default: C:\APPS\XYZ\
- name: string2
  type: string
  default: 'C:\APPS\XYZ\'
- name: string3
  type: string
  default: "C:\\APPS\\XYZ\\"

jobs:
- job: JOB
  displayName: JOB
  steps:
  - checkout: none
  - script: |
      echo 1 ${{ parameters.string1 }}
      echo 2 ${{ parameters.string2 }}
      echo 3 ${{ parameters.string3 }}

标签: azure-devopsazure-pipelinesazure-pipelines-yaml

解决方案


最后,反斜杠的消失只是在呼应值。我不完全理解为什么会发生这种情况,但很明显反斜杠是一个特殊字符并且会被解释。通过将要打印的字符串放在单引号内,这不会发生,并且参数值会正确打印出来。

这是正确的代码

parameters:
- name: string1
  type: string
  # no quotes
  default: C:\APPS\XYZ\
- name: string2
  type: string
  # single quotes
  default: 'C:\APPS\XYZ\'
- name: string3
  type: string
  # double quotes
  default: "C:\\APPS\\XYZ\\"

steps:
- checkout: none
- script: |
    echo '1 ${{ parameters.string1 }}'
    echo '2 ${{ parameters.string2 }}'
    echo '3 ${{ parameters.string3 }}'

推荐阅读