330

在配置文件中,我有一个希望为其分配 URL 的键。问题是 YAML 将 : 和 - 字符解释为创建映射或列表,因此该行存在问题

url: http://www.example-site.com/

(都是因为 http 后面的冒号和中间的连字符)

有没有明确的方法来逃避 ':' 和 '-' ?或者将整个内容放在单引号中并收工是否可行?

4

8 回答 8

316

引号:

"url: http://www.example-site.com/"

为了澄清,我的意思是“引用价值”,最初认为整个事情就是价值。如果http://www.example-site.com/是值,只需像这样引用它:

url: "http://www.example-site.com/"
于 2012-07-02T21:49:51.697 回答
254

对于长的多行文本来说,还有什么更有效,甚至更好的是,将您的文本缩进到下一行,在竖线或大于号之后:

text: >
    Op dit plein stond het hoofdkantoor van de NIROM: Nederlands Indische 
    Radio Omroep

管道保留换行符,gt 符号将所有以下行变成一个长字符串。

于 2014-03-18T15:00:08.737 回答
76

根据 YAML 规范, the:和 the-都不是问题。:只是一个键分隔符,后面有一个空格,并且-只是一个数组指示符,位于行首,后面有一个空格。

但是如果你的 YAML 实现有问题,你可能有很多选择:

- url: 'http://www.example-site.com/'
- url: "http://www.example-site.com/"
- url:
    http://www.example-site.com/
- url: >-
    http://www.example-site.com/
- url: |-
    http://www.example-site.com/

然而,在“ plain style ”中显然没有任何形式的转义。

于 2015-10-15T12:51:26.257 回答
33

引号,但我更喜欢它们的价值:

url: "http://www.example.com/"

将它们放在整条线上看起来可能会导致问题。

于 2013-10-13T05:17:49.460 回答
25

与 Jekyll 中使用的 YAML 解析器一起使用的另一种方法:

title: My Life: A Memoir

另一方面,不带空格的冒号似乎不会打扰 Jekyll 的 YAML 解析器。破折号也不行。

于 2013-09-30T03:56:58.747 回答
6

如果您使用@ConfigurationPropertiesSpring Boot 2 来使用包含冒号的键注入映射,那么您需要在引号内使用方括号进行额外级别的转义,因为 spring 只允许字母数字和“-”字符,去除其余字符。您的新密钥将如下所示:

"[8.11.32.120:8000]": GoogleMapsKeyforThisDomain

请参阅github 问题以供参考。

于 2018-10-11T10:32:24.830 回答
6

我来这里是为了让我的 Azure DevOps 命令行任务正常工作。对我有用的是使用管道 ( |) 字符。使用>无效。

例子:

steps:
- task: CmdLine@2
  inputs:
    script: |
      echo "Selecting Mono version..."
      /bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_18_1"
      echo "Selecting Xcode version..."
      /bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_10.2.1.app;sudo xcode-select --switch /Applications/Xcode_10.2.1.app/Contents/Developer"
于 2019-07-04T12:12:42.803 回答
1

GitHub 操作抱怨

curl -L -H "Authorization: token ${{ secrets.TOKEN }}"  https://example.com/try.txt

但是冒号后没有空格也没关系,比如

curl -L -H "Authorization:token ${{ secrets.TOKEN }}"  https://example.com/try.txt
于 2021-11-22T22:21:25.193 回答