Não consigo obter um JSON vazio {}
para ecoar se estiver faltando um envvar. Ou tenho um rastro }
na saída, se definido, ou a fuga é exibida.
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
Como faço para escapar corretamente?
echo "${X:-{\}}"
funcionou muito bem.Respostas:
Cite seus aparelhos:
As aspas duplas internas são obrigatórias aqui, o que parece engraçado, mas é sintaticamente correto.
As aspas simples não funcionam, e não sei bem por que não. Essa é uma citação aninhada real, não final e resumo, que você pode verificar colocando espaços. No entanto, o Double funcionará bem.
fonte
word
seguinte:-
deve ser especificamente entre aspas duplas, portanto"${X:-'{}'}"
é literalmente${X:-'{}
seguido por'}
. Por que a especificação é tão específica não está clara para mim.Você pode trapacear e definir uma variável para ser o resultado vazio e evitar os problemas de cotação.
fonte
O que frequentemente faço é usar valores hexadecimais para caracteres via
printf
:Um pouco detalhado, mas funciona sem muito estresse sobre as aspas.
fonte