Commande pour échapper à une chaîne dans bash

J’ai besoin d’une commande bash qui convertira une chaîne en quelque chose qui est échappé. Voici un exemple:

 echo "bonjour \ world" | escape | someprog

Où la commande d’échappement rend “hello \ world” dans “hello \\ world”. Alors, someprog peut utiliser “hello \ world” comme prévu. 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 être utilisé à travers des variables aussi:

 printf -v var "%q\n" "hello\world" echo "$var" hello\\world 

Pure Bash, utilisez la substitution de parameters:

 ssortingng="Hello\ world" echo ${ssortingng//\\/\\\\} | 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 évasion, vous pouvez enchaîner plusieurs appels pour échapper aux caractères appropriés.