Existe alguma lógica consistente nisso?
some-command "${somevariable//some pattern/'how does this get parsed?'}"
Postei algumas conclusões e testes brutos abaixo como uma "resposta", mas eles não são uma resposta completa de forma alguma. A página de manual do Bash parece silenciosa sobre o assunto.
Conforme discutido nos comentários, isso parece ter mudado entre as versões do Bash. Eu acho que esta é a mudança relevante no
bash-4.3-alpha
( changelog ):E a descrição para
shopt -s compat42
( manual online ):O exemplo de aspas simples:
Solução alternativa: coloque a string de substituição em uma variável e não use aspas dentro da substituição:
O engraçado é que, se a expansão não estiver entre aspas , as aspas serão removidas após a substituição, em todas as versões. Isso é
s=abc; echo ${s/b/""}
impressõesac
. Isso obviamente não acontece com outras expansões, por exemplo,s='a""c' ; echo ${s%x}
outputsa""c
.Regras gerais por engenharia reversa:
E uma conclusão:
'\''
como uma substituição por meio da expansão de parâmetros."'\''"
como uma substituição.Seguem alguns testes brutos.
Através da experimentação, descobri que a seguinte sintaxe funciona para converter aspas simples em aspas duplas no GNU bash, versão 5.0.11(1)-release (x86_64-pc-linux-gnu)...
Resultado é...
Existe uma loja relevante documentada como...