猿问

如何在双引号内逃避双引号?

如何在双引号内逃避双引号?

任何人都可以告诉我如何在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


aluckdog
浏览 569回答 3
3回答

RISEBY

使用反斜杠:echo "\""     # Prints one " character.

扬帆大鱼

在shell中转义引号的简单示例:$ echo 'abc'\''abc'abc'abc $ echo "abc"\""abc" abc"abc这是通过完成已经打开的one('),放置一个(\'),然后打开另一个(')来完成的。或者:$ echo 'abc'"'"'abc'abc'abc $ echo "abc"'"'"abc" abc"abc这是通过完成已经打开的one('),将引用放在另一个引号("'")中,然后打开另一个(')来完成的。更多示例:在单引号字符串中转义单引号

冉冉说

我不知道为什么今天在bash标记的列表中出现了这个旧问题,但是为了以后的研究人员,请记住,你可以通过使用你需要回应的字符的ascii代码来避免转义。例:echo&nbsp;-e&nbsp;"this&nbsp;is&nbsp;\x22\x27\x22\x27\x22text\x22\x27\x22\x27\x22"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;is&nbsp;"'"'"text"'"'"\x22是双引号和\x27单引号的ascii代码(十六进制)。同样,你可以回显任何char。我想如果我们尝试用反斜杠回显上面的字符串,我们将需要一个凌乱的两行反斜回声...... :)对于变量赋值,这是等效的:$&nbsp;a=$'this&nbsp;is&nbsp;\x22text\x22'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$&nbsp;echo&nbsp;"$a"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;is&nbsp;"text"如果该变量已由另一个程序设置,您仍然可以使用sed或类似工具应用双/单引号。例:$&nbsp;b="just&nbsp;another&nbsp;text&nbsp;here"$&nbsp;echo&nbsp;"$b"just&nbsp;another&nbsp;text&nbsp;here $&nbsp;sed&nbsp;'s/text/"'\0'"/'&nbsp;<<<"$b"&nbsp;#\0&nbsp;is&nbsp;a&nbsp;special&nbsp;sed&nbsp;operatorjust&nbsp;another&nbsp;"0"&nbsp;here&nbsp;#this&nbsp;is&nbsp;not&nbsp;what&nbsp;i&nbsp;wanted&nbsp;to&nbsp;be$&nbsp;sed&nbsp;'s/text/\x22\x27\0\x27\x22/'&nbsp;<<<"$b"just&nbsp;another&nbsp;"'text'"&nbsp;here&nbsp;#now&nbsp;we&nbsp;are&nbsp;talking.&nbsp;You&nbsp;would&nbsp;normally&nbsp;need&nbsp;a&nbsp;dozen&nbsp;of&nbsp;backslashes&nbsp;to&nbsp;achieve&nbsp;the&nbsp;same&nbsp;result&nbsp;in&nbsp;the&nbsp;normal&nbsp;way.
随时随地看视频慕课网APP
我要回答