Etes-vous sûr de vouloir faire ceci? C'est une sorte d'odeur de code. Il y a très probablement une meilleure façon de faire ce que vous essayez de faire que de réduire votre contribution. Correctement citant vos variables lorsque vous les utilisez habituellement suffit:
$ file='some file name.txt'
$ touch "$file"
$ ls "$file"
some file name.txt
Si vous insistez, bien que, utilisez le format %q
avec printf:
$ str='The great theater'
$ printf '%q\n' "$str"
The\ great\ theater
$ escaped=$(printf '%q' "$str")
$ echo "$escaped"
The\ great\ theater
Notez que ce n'échappera pas à des barres obliques comme ils n » est t normalement des caractères spéciaux.
Qu'essayez-vous vraiment de faire? –
-1 pour ne pas spécifier exactement ce qui doit être échappé et, plus important encore, pourquoi. – chepner
J'ai eu un problème similaire: nécessaire d'ajouter une autre barre oblique inverse pour échapper à une barre oblique inverse existante. Par exemple, en changeant c: \ home à c: \\ home. – OutputLogic