Preciso de um comando bash que converterá uma string em algo que tenha escape. Aqui está um exemplo:
echo "hello\world" | escape | someprog
Onde o comando escape "hello\world"
entra "hello\\\world"
. Então, someprog pode usar "hello\\world"
conforme o esperado. Claro, este é um exemplo simplificado do que realmente estarei fazendo.
Respostas:
No Bash:
por exemplo:
Isso também pode ser usado por meio de variáveis:
fonte
%q
esteve quebrado por mais de uma década até cerca de 2012. Teve problemas com~
. Também há sed one-liners portáteis stackoverflow.com/a/20053121/1073695a='abc$def":'; printf '%q\n' "$a"
resulta emabc\$def\":
(o cifrão tem escape). Este é o Bash 4.3 (obtive o mesmo resultado no Bash 3.2). Qual versão você está usando?printf "%q" 'he$l&lo\world'
printf '%q\n' text
cita o texto nobash
formato (e para a localidade atual), de modo que só funcionaria no caso do OP se elessomeprog
tivessem exatamente a mesma sintaxe de citaçãobash
que é altamente improvável.Pure Bash, use a substituição de parâmetro:
fonte
Você pode usar perl para substituir vários caracteres, por exemplo:
Dependendo da natureza de sua fuga, você pode encadear várias chamadas para escapar dos caracteres adequados.
fonte