136 votes

Commande pour échapper à une chaîne dans bash

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 de "hello \ world" en "hello \\ world". Ensuite, someprog peut utiliser "hello \ world" comme il le souhaite. Bien sûr, ceci est un exemple simplifié de ce que je vais vraiment faire.

210voto

Dennis Williamson Points 105818

Dans Bash:

 printf "%q" "hello\world" | someprog
 

par exemple:

 $ printf "%q" "hello\world"
hello\\world
 

15voto

fgm Points 5930

Pure Bash, utilise la substitution de paramètre:

 string="Hello\ world"
echo ${string//\\/\\\\} | someprog
 

0voto

Michael Aaron Safyan Points 45071

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X