Мне нужна команда удара, которая преобразует строку во что-то, чего оставляют. Вот пример:
echo "hello\world" | escape | someprog
Где команда Escape делает "hello\world"
в "hello\\\world"
. Затем someprog может использовать "hello\\world"
как это ожидает. Конечно, это - упрощенный пример того, что я буду действительно делать.
В Bash:
printf "%q" "hello\world" | someprog
например:
printf "%q" "hello\world"
hello\\world
Это также можно использовать через переменные:
printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
Чистый Bash, используйте подстановку параметров:
string="Hello\ world"
echo ${string//\\/\\\\} | someprog
Вы можете использовать perl для замены различных символов, например:
$ echo "Hello\ world" | perl -pe 's/\\/\\\\/g'
Hello\\ world
В зависимости от характера вашего экранирования вы можете объединить несколько вызовов, чтобы экранировать правильные символы.