やりたいこと
シェルスクリプトで以下のようなエスケープ文字を含むJsonファイルを出力したい
{
"hoge": "fuga",
"nested_json": "{ \"hoge\": \"fuga\"}"
}
ネストしたjsonの中でエスケープ文字を使うときなど、上記を実現するためには\"
といったエスケープ処理自体をエスケープして出力する必要がある。
解決策
\\\"
を使う。
json="{\"hoge\": \"fuga\", \"nested_json\": \"{\\\"hoge\\\": \\\"fuga\\\"}\"}"
echo $json > result.json
結果
{"hoge": "fuga", "nested_json": "{\"hoge\": \"fuga\"}"}
syntaxエラーが出ずに無事出力できました!