【发布时间】:2012-07-03 08:07:03
【问题描述】:
在配置文件中,我有一个希望为其分配 URL 的键。问题是 YAML 将 : 和 - 字符解释为创建映射或列表,因此该行存在问题
url: http://www.example-site.com/
(都是因为http后面的冒号和中间的连字符)
是否有明确的方式来逃避 ':' 和 '-' ?或者将整个内容放在单引号中并收工是否可行?
【问题讨论】:
在配置文件中,我有一个希望为其分配 URL 的键。问题是 YAML 将 : 和 - 字符解释为创建映射或列表,因此该行存在问题
url: http://www.example-site.com/
(都是因为http后面的冒号和中间的连字符)
是否有明确的方式来逃避 ':' 和 '-' ?或者将整个内容放在单引号中并收工是否可行?
【问题讨论】:
行情:
"url: http://www.example-site.com/"
为了澄清,我的意思是“引用价值”,最初认为整个事情就是价值。如果 http://www.example-site.com/ 是值,则像这样引用它:
url: "http://www.example-site.com/"
【讨论】:
- 'PS4="+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }"'
对于长的多行文本也有效,甚至更好的是,将文本缩进到下一行,在竖线或大于号之后:
text: >
Op dit plein stond het hoofdkantoor van de NIROM: Nederlands Indische
Radio Omroep
管道保留换行符,gt-sign 将后面的所有行变成一个长字符串。
【讨论】:
>- 或|- 来防止这种情况发生。
- >,但第一个之后的项目被忽略了。
- |,然后在新行上我缩进了列表项文本,以便第一个字符与管道对齐。我希望这会有所帮助,它在 Rails 4.2 语言环境文件中对我有用。
根据 YAML 规范,: 和 - 都不是问题。 : 只是一个键分隔符,后面有一个空格,- 只是一个数组指示符,位于行首,后面有一个空格。
但如果您的 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”中没有明确的转义形式。
【讨论】:
引号,但我更喜欢它们的价值:
url: "http://www.example.com/"
将它们放在整条线上看起来可能会导致问题。
【讨论】:
与 Jekyll 中使用的 YAML 解析器一起工作的另一种方式:
title: My Life: A Memoir
另一方面,不带空格的冒号似乎不会打扰 Jekyll 的 YAML 解析器。破折号也不行。
【讨论】:
如果您在 Spring Boot 2 中使用 @ConfigurationProperties 来注入包含冒号的键的映射,那么您需要在引号内使用方括号进行额外级别的转义,因为 spring 只允许字母数字和“-”字符,去掉其余的部分。您的新密钥将如下所示:
"[8.11.32.120:8000]": GoogleMapsKeyforThisDomain
请参阅this github 问题以供参考。
【讨论】:
我来到这里是为了让我的 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"
【讨论】:
.gitlab-ci.yml 中使用了同样的东西,但直到我需要管道'|'在脚本中 - 它默默地失败了:(
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
【讨论】: