我写了一个 YAML 文件如下:
private_ips:
- 192.168.1.1
- 192.168.1.2
- 192.168.1.3
- 192.168.1.4
testcases:
- name: test_outbound
ip: << I want to use reference to private_ips[0] = '192.168.1.1'
如何在 YAML 文件中使用引用?
最佳答案
您可以使用以下内容:
ip: !Ref private_ips.0
在 YAML 中。但这将要求加载 YAML 的程序为标签
!Ref
实现特殊类型。以相对于当前数据结构的方式解释其节点。这在大多数 YAML 加载器中有些问题,因为它们执行深度优先遍历并且在构建 !Ref
时没有任何概念。树 YAML 文档根的标记节点。这可以通过加载数据结构后的第二遍来解决。 YAML 规范中没有“快捷方式”来执行这种遍历文档以获取值而无需加载程序执行某些特殊操作(即未在 YAML 规范中指定)。YAML 规范中包含 anchor (由
&
表示)和别名(由 *
表示)的概念,这取决于您想如何使用它,这可能会解决您的问题,例如如果您想尝试使用哪个 IP 地址进行测试:private_ips:
- &test 192.168.1.1
- 192.168.1.2
- 192.168.1.3
- 192.168.1.4
testcases:
- name: test_outbound
ip: *test
这应该在任何符合规范的 YAML 加载器中加载,就好像最后一行写为:
ip: 192.168.1.1
没有你的程序做任何额外的处理。
关于yaml - 如何引用yaml文件中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742161/