yaml工作常用语法总结

news/2024/11/16 13:05:38/

文章目录

    • yaml中的| 符号 和 > 符号
    • yaml中的 - 符号
    • 工作中常遇到的问题
      • - 命令行中有冒号加空格,导致yaml解析报错

yaml中的| 符号 和 > 符号

  1. 在 YAML 中,| 符号表示标量块(Scalar Block)的开始。它用于表示长文本块或保持多行字符串的格式。

  2. 在 YAML 中,> 符号表示折叠块(Folded Block)的开始。它用于表示将多行文本块折叠为单行,不保留每行的换行符和大部分缩进。

使用 > 符号后,多行文本会被折叠成单行,而换行符会被替换为空格。只有在文本末尾的换行符会被保留。

需要注意的是,只有文本末尾的换行符会被保留。如果希望保留所有换行符和缩进,可以使用 | 符号。

另外,在 YAML 中,您可以同时使用 | 和 \ 进行多行文本块的折叠,并将其折叠到一行中。这样可以保留换行符,并将多行文本合并为一行。

以下是一个示例,展示了如何在 YAML 中使用 | 和 \ 进行多行折叠到一行的写法:

description: |This is a long text \that spans \multiple lines \and is folded into a single line.

在上述示例中,使用 | 表示标量块的开始,使用 \ 将多行文本折叠到一行中,保留了原始的换行符。
需要注意的是,\ 符号后面不能有空格,否则会被解析为文本的一部分。

yaml中的 - 符号

在 YAML 中,- 符号用于表示一个列表项(List Item)。它是 YAML 中定义序列(Sequence)的一种方式。

使用 - 符号,可以将多个值组合成一个列表,表示一组相关的项。

fruits:- apple- banana- orange

在上述示例中,fruits 是一个键,- 符号后面的值表示一个列表,包含了三个水果项:apple、banana 和 orange。

注意,每个列表项需要在同一缩进级别下,并且可以包含任意数量的空格缩进。

工作中常遇到的问题

- 命令行中有冒号加空格,导致yaml解析报错

- cd /home/xxx/ && curl -vF "f1=@$(ls -t xxx.install*| head -1)" -H "UploadToken: xxx:vimYNbV-aaa=:fasdfaluZbb" http://192.168.1.1:8888/api/v1/file/upload

问题分析:
在 YAML 中的标量块中使用了冒号:加空格,可能会导致yaml解析问题。因为在 YAML 中,冒号用于表示键值对的分隔符。

经过观察:在 HTTP 请求头中,冒号 : 用于分隔头字段的名称和值。
值中虽然有冒号, UploadToken: 和值中间有个空格。

经过测试,使用postman生成的curl中,也是这么处理的。

curl --location 'http://192.168.1.2:8888/api/v1/file/upload' \
--header 'UploadToken: httpcat:aaaVvimYNbV-YpJ9EFMbbb=:aaakZWFkbGluZSIcccc' \
--form 'f1=@"/C:/Users/xxx/Desktop/syslog.md"'

解决方法:
推荐如下方法:

为了避免 YAML 解析失败,如果您想在 YAML 中表示命令行,可以使用以下两种方式:

您可以将该行放在引号中,以保留原始字符串的格式。例如:

- 'xxxx'

或者,您可以将该行作为纯文本块(Plain Scalar)进行处理,使用 | 或 >- 符号来保留换行符和缩进。例如:

- |xxxx

使用上述写法,您可以确保以 - 开头的行被正确解析为字符串,而不会被误解为列表项。

总结:yaml中写命令行字符时候,建议 使用 - | 方式,避免被当前列表项导致一些yaml解析错误问题。


http://www.ppmy.cn/news/1263365.html

相关文章

微信小程序适配方案:rpx(responsive pixel响应式像素单位)

小程序适配单位:rpx 规定任何屏幕下宽度为750rpx 小程序会根据屏幕的宽度自动计算rpx值的大小 Iphone6下:1rpx 1物理像素 0.5css 小程序编译后,rpx会做一次px换算,换算是以375个物理像素为基准,也就是在一个宽度…

.NET Core6.0 MVC+layui+SqlSugar 简单增删改查

HTML部分: {ViewData["Title"] "用户列表"; } <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>用户列表</title><meta name"renderer" content"webkit"><meta …

python之马尔科夫链(Markov Chain)

马尔可夫链&#xff08;Markov Chain&#xff09;是一种随机过程&#xff0c;具有“马尔可夫性质”&#xff0c;即在给定当前状态的条件下&#xff0c;未来状态的概率分布仅依赖于当前状态&#xff0c;而与过去状态无关。马尔可夫链在很多领域都有广泛的应用&#xff0c;包括蒙…

【WPF】应用程序和已知安卓设备的局域网IP之间进行通信

要在WPF应用程序和已知安卓设备的局域网IP之间进行通信&#xff0c;可以使用Socket通信。以下是一个基本的示例&#xff1a; 在WPF应用程序中创建一个Socket对象并连接到安卓设备的IP地址和端口号&#xff1a; using System.Net.Sockets;// 创建一个Socket对象 Socket socket…

2023-12-05 Qt学习总结2

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言五 Hello Qt!六 Qt控件和事件七 Qt信号和槽八 Qt自定义信号和槽总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 五 Hello Qt! 现在我们已经有了一个空窗口工程, 传统上, 我们要实现一个"Hello …

C++11改进观察者模式

观察者模式定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 先看一个简单的观察者模式是如何实现的&#xff1a; #include <iostream> #include <vector> #include <map> …

用Java的Process执行命令行,ffmpeg抽帧到一千多帧图片卡住,不报错。

项目场景&#xff1a; 最近需要写一个抽帧、推流的工具类&#xff0c;抽帧写好测试的时候也没问题&#xff0c;等到真正用的时候就发现各种问题。 问题描述 用Java执行ffmpeg抽帧命令&#xff0c;测试的时候没有问题&#xff0c;后来发现抽帧图片多了就会卡住。 刚开始觉得可…

使用wire重构商品微服务

一.wire简介 Wire 是一个轻巧的Golang依赖注入工具。它由Go Cloud团队开发&#xff0c;通过自动生成代码的方式在编译期完成依赖注入。 依赖注入是保持软件 “低耦合、易维护” 的重要设计准则之一。 此准则被广泛应用在各种开发平台之中&#xff0c;有很多与之相关的优秀工…