如何在YAML中转义JSON

如何在YAML中转义JSON,yaml,amazon-ecs,bitbucket-pipelines,Yaml,Amazon Ecs,Bitbucket Pipelines,以下命令适用于bash shell,但YAML解析器(bitbucket pipelines.YAML)将其报告为无效语法 -export TASK\u VERSION=$(aws ecs注册任务定义——系列MyTask——容器定义“[{“name\”:“MyContainer\”,“image\”:“1234567.dkr.ecr.us-west-1.amazonaws.com/ecs存储库:1.0.13\”,“cpu\”:50,““portMappings\”:[{“hostPort\”:

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

-export TASK\u VERSION=$(aws ecs注册任务定义——系列MyTask——容器定义“[{“name\”:“MyContainer\”,“image\”:“1234567.dkr.ecr.us-west-1.amazonaws.com/ecs存储库:1.0.13\”,“cpu\”:50,““portMappings\”:[{“hostPort\”:80,““containerPort\”:80,““protocol\”:“tcp\”,“memory\”:300})”| jq--原始输出“.taskDefinition.revision”)

尽管我已经用\char跳过了所有双引号,但我认为[和{正在放弃它


有什么想法吗?

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

尝试将脚本放在一个文件夹中


请共享命令的输出。
echo“$TASK\u VERSION”
的输出是什么?echo“$TASK\u VERSION”的输出命令是整数。它是aws ecs任务的版本号。如果您将此命令放入任何YAML验证器中,它将不会解析为有效命令。请注意--container definitions值是一个JSON字符串,这会使解析器出错。是的,可以使用块标量(如果您不需要YAML转义序列)。我将在我关于YAML报价的文章中添加一个链接,以了解更多信息。还应注意,在此处阅读折叠块scalar
会更好。您可以将长线分成几行,加载时它们将折叠在一起工作!!Life saver!谢谢@Greg
- |
  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')