如何在双引号内逃避双引号?任何人都可以告诉我如何在bash中的双字符串中避免双引号?例如在我的shell脚本中#!/bin/bashdbload="load data local infile \"'gfpoint.csv'\" into table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY \"'\n'\" IGNORE 1 LINES"我无法\"正确使用双引号转义来获取ENCLOSED BY 。我不能对我的变量使用单引号,因为我想使用变量$dbtable。
3 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
在shell中转义引号的简单示例:
$ echo 'abc'\''abc'abc'abc $ echo "abc"\""abc" abc"abc
这是通过完成已经打开的one('
),放置一个(\'
),然后打开另一个('
)来完成的。
或者:
$ echo 'abc'"'"'abc'abc'abc $ echo "abc"'"'"abc" abc"abc
这是通过完成已经打开的one('
),将引用放在另一个引号("'"
)中,然后打开另一个('
)来完成的。
更多示例:在单引号字符串中转义单引号
冉冉说
TA贡献1877条经验 获得超1个赞
我不知道为什么今天在bash标记的列表中出现了这个旧问题,但是为了以后的研究人员,请记住,你可以通过使用你需要回应的字符的ascii代码来避免转义。例:
echo -e "this is \x22\x27\x22\x27\x22text\x22\x27\x22\x27\x22" this is "'"'"text"'"'"
\x22
是双引号和\x27
单引号的ascii代码(十六进制)。同样,你可以回显任何char。
我想如果我们尝试用反斜杠回显上面的字符串,我们将需要一个凌乱的两行反斜回声...... :)
对于变量赋值,这是等效的:
$ a=$'this is \x22text\x22' $ echo "$a" this is "text"
如果该变量已由另一个程序设置,您仍然可以使用sed或类似工具应用双/单引号。例:
$ b="just another text here"$ echo "$b"just another text here $ sed 's/text/"'\0'"/' <<<"$b" #\0 is a special sed operatorjust another "0" here #this is not what i wanted to be$ sed 's/text/\x22\x27\0\x27\x22/' <<<"$b"just another "'text'" here #now we are talking. You would normally need a dozen of backslashes to achieve the same result in the normal way.
- 3 回答
- 0 关注
- 568 浏览
添加回答
举报
0/150
提交
取消