azure-devops - 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 }}
解决方案
最后,反斜杠的消失只是在呼应值。我不完全理解为什么会发生这种情况,但很明显反斜杠是一个特殊字符并且会被解释。通过将要打印的字符串放在单引号内,这不会发生,并且参数值会正确打印出来。
这是正确的代码
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 }}'
推荐阅读
- ruby-on-rails - 如何修复 PG::UndefinedTable: 错误: 关系不存在
- python - 如何在 Jinja 模板中调用 Python 函数并使用函数值中返回的字典?
- java - 类“de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon”不支持属性“selectionEnd”
- git-clone - 我需要在我工作的每个 git 克隆项目文件夹中安装 scipy、numpy 吗?
- java - 解析 Json“无名”数组数据
- sql-server - 如何确保 DT_STR 被 OLE DB Destination 接受?
- macos - 访问 Mac OS X 用户日期和时间首选项
- json - 具有互斥的 JSON 的颠簸转换
- linux - 如何用 awk 或 sed 删除断线?
- javascript - 如何修复“词法声明不能出现在单语句上下文中”