命令在bash中转义string

我需要一个bash命令,将string转换成一些被转义的东西。 这是一个例子:

 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 

这也可以通过variables来使用:

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

纯Bash,使用参数replace:

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

您可以使用perl来replace各种字符,例如:

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

根据您逃生的性质,您可以链接多个呼叫以逃避正确的字符。