使用Unix shell脚本编写JSON文件时转义双引号

时间:2017-11-08 13:56:51

标签: shell unix sed

我的输入文件“test.html”包含以下内容。

Hi "Alice"

一个shell脚本

#!/bin/bash
var=`sed -e 's/"/\\"/g' < test.html`
echo { \"content\": \"$var\" } >> test.json

当我用命令

运行上面的shell脚本时
>./to-json.sh

我正在获取输出

{ "content": "Hi "Alice"" }

虽然所需的输出是(有效的JSON)

{ "content": "Hi \"Alice\"" }

有人可以帮我辨别我做错了什么吗?如何获得上述所需的输出?

1 个答案:

答案 0 :(得分:1)

使用真正的JSON生成工具包,例如jq

var='Hi "Alice"'  ## or var=$(<test.html) to read from a file
jq -nc --arg content "$var" '{ "content": $content }'

...正确地作为输出发出:

{"content":"Hi \"Alice\""}