Pelo manual do Bash (e POSIX também ):
When the old-style backquote form of substitution is used, backslash retains its literal meaning except when followed by
$
,'
, or\
.
Isso significa que 'echo "$PROXY_URL" | sed -e 's/[\/&]/\&/g''
resulta no comando sed
que é executado sendo sed -e 's/[\/&]/\&/g'
, porque a barra invertida dupla escapou para uma única. \&
, em seguida, faz um literal &
in sed.
Você pode usar a substituição do comando $(...)
-style para evitar isso:
proxyUrlSedEscaped=$(echo "$PROXY_URL" | sed -e 's/[\/&]/\&/g')
A substituição de novo estilo permite qualquer comando com sua interpretação usual.
Se você precisar usar '
, a dupla fuga bastante grotesca também funciona:
proxyUrlSedEscaped='echo "$PROXY_URL" | sed -e 's/[\/&]/\\&/g''
Isso transforma \\
em \
, que sed transforma em \
para você.