如何在 YAML 中转义 JSON

Hir*_*enP 2 yaml amazon-ecs bitbucket-pipelines

以下命令适用于 bash shell,但 YAML 解析器 (bitbucket-pipelines.yaml) 将其报告为无效语法

https://bitbucket-pipelines.atlassian.io/validator

- export TASK_VERSION=$(aws ecs register-task-definition --family MyTask --container-definitions "[{\"name\":\"MyContainer\",\"image\":\"1234567.dkr.ecr.us-west-1.amazonaws.com/ecs-repository:1.0.13\",\"cpu\":50,\"portMappings\": [{\"hostPort\": 80,\"containerPort\": 80,\"protocol\":\"tcp\"}],\"memory\":300}]" | jq --raw-output '.taskDefinition.revision')

尽管我已经使用 \ char 转义了所有双引号,但我认为 [ 和 { 正在抛弃它。

有任何想法吗?

Gre*_*reg 6

我假设有问题的行是一个更大的、结构有效的 bitbucket-pipelines.yaml 文件的一部分。

尝试将脚本放置在块标量中。

- |
  export TASK_VERSION=$(aws ecs register-task-definition --family MyTask --container-definitions "[{\"name\":\"MyContainer\",\"image\":\"1234567.dkr.ecr.us-west-1.amazonaws.com/ecs-repository:1.0.13\",\"cpu\":50,\"portMappings\": [{\"hostPort\": 80,\"containerPort\": 80,\"protocol\":\"tcp\"}],\"memory\":300}]" | jq --raw-output '.taskDefinition.revision')
Run Code Online (Sandbox Code Playgroud)