2017-05-08 66 views
-1

与多个反斜杠代替单引号我有一个包含一个引号字符串的变量:庆典:在可变

echo $variable 
It's my variable 

才能够使用这个变量作为ffmpeg的一个传奇,我需要添加5个反斜线该帖前:

variable="It\\\\\'s my variable" 

我很困惑,我应该用什么语法,反斜线和引号有非常具体的含义在bash替换命令。我曾经尝试这样做:

variable=`echo $variable | tr "'" "\\\\\'"` 

,但它不会产生正确的结果

+0

你确定你需5个反斜杠?我认为也许你只需要在你的'ffmpeg'命令中使用它时引用这个变量 –

+0

@TomFenech我从http://stackoverflow.com/questions/10725225/ffmpeg-single-quote-in-drawtext/ 10729560 – Sulli

+0

你不应该有奇数个反斜杠。 – 123

回答

3

你可以使用一些单引号自己告诉bash不能解释这些斜线:

variable="It"'\\\\\'"'s my variable" 

编辑:要转换现有的变量使用:

variable=${variable//\'/'\\\\\'\'} 
+0

问题是我的变量从文件中获取它的内容,我没有自己定义它。所以我真的需要一种方法来避免变量创建后的报价 – Sulli

0

这工作正常,是便携式,并没有公关的oblems sed的:

echo "$v" |perl -pe "s/'/\x5c\x5c\x5c\x5c\x5c'/g" 

PS:\x5c是斜线的ASCII码\