Команда для выхода из строки в bash

Мне нужна команда bash, которая преобразует строку в нечто экранированное. Вот пример:

echo "hello\world" | escape | someprog

Где команда escape превращает "hello\world" в "hello\\\world". Затем someprog может использовать "hello\\world" как и ожидалось. Конечно, это упрощенный пример того, что я действительно буду делать.

Ответ 1

В Bash:

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

например:

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

Это также можно использовать с помощью переменных:

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

Ответ 2

Pure Bash, используйте замену параметров:

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

Ответ 3

Вы можете использовать perl для замены различных символов, например:

$ echo "Hello\ world" | perl -pe 's/\\/\\\\/g'
Hello\\ world

В зависимости от характера вашего побега вы можете связать несколько вызовов, чтобы избежать соответствующих символов.