空のJSON中括弧をデフォルト値にエコーする方法は?

空のJSON中括弧をデフォルト値にエコーする方法は?

{}envvarがないと空のJSONエコーが得られないようです。}設定すると、出力に末尾があるか、エスケープが表示されます。

bash-3.2$ unset X
bash-3.2$ echo "${X:-{}}"
{}
bash-3.2$ X=y
bash-3.2$ echo "${X:-{}}"
y}
bash-3.2$ echo "${X:-{\}}"
y
bash-3.2$ unset X
bash-3.2$ echo "${X:-{\}}"
{\}
bash-3.2$ echo "${X:-'{}'}"
'{}'
bash-3.2$ X=z
bash-3.2$ echo "${X:-'{}'}"
z

どうすれば正しく脱出できますか?

ベストアンサー1

中かっこを引用すると、次のようになります。

bash-3.2$ echo "${X:-"{}"}"
{}
bash-3.2$ X=y
bash-3.2$ echo "${X:-"{}"}"
y
bash-3.2$ unset X
bash-3.2$ echo "${X:-"{}"}"
{}

内部にダブルこれには引用符が必要です。これは楽しいようですが、文法的には大丈夫です。

一重引用符は機能しません。その理由は完全にはわかりません。これは最後と履歴書ではなく、実際の入れ子になった引用です。スペースを入れて確認できます。しかし、Doubleもうまく動作します。

おすすめ記事