J'ai besoin d'une commande bash qui convertira une chaîne en un élément échappé. Voici un exemple:
echo "hello\world" | escape | someprog
Où la commande d'échappement fait "hello\world"
en "hello\\\world"
. Ensuite, someprog peut utiliser "hello\\world"
comme il s'y attend. Bien sûr, ceci est un exemple simplifié de ce que je vais vraiment faire.
Dans Bash:
printf "%q" "hello\world" | someprog
par exemple:
printf "%q" "hello\world"
hello\\world
Cela pourrait aussi être utilisé avec des variables:
printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
Pure Bash, utilise la substitution de paramètre:
string="Hello\ world"
echo ${string//\\/\\\\} | someprog
Vous pouvez utiliser Perl pour remplacer différents caractères, par exemple:
$ echo "Hello\ world" | Perl -pe 's/\\/\\\\/g'
Hello\\ world
Selon la nature de votre échappement, vous pouvez chaîner plusieurs appels pour échapper aux caractères appropriés.