Вы уверены, что вам нужно это сделать?Это своего рода кодовый запах.Скорее всего, есть лучший способ сделать все, что вы пытаетесь сделать, чем манипулировать вашим вкладом.Как правило, правильных кавычек ваших переменных при их использовании достаточно:
$ file='some file name.txt'
$ touch "$file"
$ ls "$file"
some file name.txt
Если вы все же настаиваете, используйте формат %q
с printf:
$ str='The great theater'
$ printf '%q\n' "$str"
The\ great\ theater
$ escaped=$(printf '%q' "$str")
$ echo "$escaped"
The\ great\ theater
Обратите внимание, что это не такизбегайте косых черт, поскольку они обычно не являются специальными символами.