gpt4 book ai didi

docker-compose - yaml 中带引号和不带引号的字符串之间有什么区别(如果有)?

转载 作者:行者123 更新时间:2023-12-03 19:35:09 26 4
gpt4 key购买 nike

基于这个问题:Docker Compose variable Substitution with Quotes vs without

yaml 中带引号和不带引号的字符串之间有什么区别(如果有)?

这个问题主要来自我关于docker compose文件中变量替换的问题——yml。

官方给出的例子是:

db:
image: "postgres:${POSTGRES_VERSION}"

我想知道如果没有字符串这是否有效:
db:
image: postgres:${POSTGRES_VERSION}

如果不是,那为什么呢?在 docker 中使用变量替换时,我应该在哪些情况下添加引号?我如何识别它们?它叫什么 - 如果我需要在谷歌中对它们进行进一步研究?

最佳答案

简短的回答是,在大多数情况下没有区别。

---
foo: bar

是相同的
---
'foo': 'bar'

使用特殊字符或保留字符时必须使用引号(例如 &{ 开头,或 :<space> )。

如果标量将解析为特殊类型,您还必须使用引号,例如 true , false , null 、数字等。这取决于 YAML 版本和架构。

它还取决于您使用的应用程序/处理器。根据标量是否被引用,它们可能会做不同的事情。

在您给出的示例中,如果处理器正确实现 YAML,则不需要引用。

在我的文章中,您可以阅读有关 YAML 中引用和架构/类型的所有内容:
http://blogs.perl.org/users/tinita/2018/03/strings-in-yaml---to-quote-or-not-to-quote.html
http://blogs.perl.org/users/tinita/2018/01/introduction-to-yaml-schemas-and-tags.html

进一步说明:YAML 由具有三种基本数据类型的节点组成:标量、映射和序列。
序列是标量、映射或序列的列表。映射是键到值的映射(或字典、散列),这两种值都可以是所有三种类型。所以你会得到一个树结构,或者更准确地说,是一个图。
例如,标量可以是字符串、数字或空值。

关于docker-compose - yaml 中带引号和不带引号的字符串之间有什么区别(如果有)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com