Ответ 1
В Bash:
printf "%q" "hello\world" | someprog
например:
printf "%q" "hello\world"
hello\\world
Это также можно использовать с помощью переменных:
printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
Мне нужна команда bash, которая преобразует строку в нечто экранированное. Вот пример:
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
Pure Bash, используйте замену параметров:
string="Hello\ world"
echo ${string//\\/\\\\} | someprog
Вы можете использовать perl для замены различных символов, например:
$ echo "Hello\ world" | perl -pe 's/\\/\\\\/g'
Hello\\ world
В зависимости от характера вашего побега вы можете связать несколько вызовов, чтобы избежать соответствующих символов.