首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何转义双引号中的双引号?

如何转义双引号中的双引号?
EN

Stack Overflow用户
提问于 2010-10-01 05:05:45
回答 6查看 461.1K关注 0票数 347

如何在Bash中转义双字符串中的双引号?

例如,在我的shell脚本中

代码语言:javascript
运行
复制
#!/bin/bash

dbload="load data local infile \"'gfpoint.csv'\" into table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY \"'\n'\" IGNORE 1 LINES"

我无法让带双引号的ENCLOSED BY '\"'正确转义。我不能对我的变量使用单引号,因为我想使用变量$dbtable

EN

回答 6

Stack Overflow用户

发布于 2010-10-01 05:07:44

使用反斜杠:

代码语言:javascript
运行
复制
echo "\""     # Prints one " character.
票数 335
EN

Stack Overflow用户

发布于 2015-03-01 04:50:43

在shell中转义引号的一个简单示例:

代码语言:javascript
运行
复制
$ echo 'abc'\''abc'
abc'abc
$ echo "abc"\""abc"
abc"abc

这是通过完成一个已经打开的('),放置转义的(\'),然后打开另一个(')来完成的。

或者:

代码语言:javascript
运行
复制
$ echo 'abc'"'"'abc'
abc'abc
$ echo "abc"'"'"abc"
abc"abc

完成已打开的报价('),在另一个报价("'")中放置报价,然后打开另一个报价(')。

更多示例:Escaping single-quotes within single-quoted strings

票数 109
EN

Stack Overflow用户

发布于 2017-02-20 18:17:48

请记住,您可以通过使用需要回显的字符的ASCII代码来避免转义。

示例:

代码语言:javascript
运行
复制
echo -e "This is \x22\x27\x22\x27\x22text\x22\x27\x22\x27\x22"
This is "'"'"text"'"'"

\x22是双引号的ASCII码(十六进制),\x27是单引号的ASCII码。同样,您可以回显任何字符。

我想如果我们尝试用反斜杠回显上面的字符串,我们将需要一个杂乱的两行反斜杠的回显…:)

对于变量赋值,这是等效的:

代码语言:javascript
运行
复制
a=$'This is \x22text\x22'
echo "$a"

# Output:
This is "text"

如果该变量已经由另一个程序设置,您仍然可以使用sed或类似的工具应用双引号/单引号。

示例:

代码语言:javascript
运行
复制
b="Just another text here"
echo "$b"

 Just another text here

sed 's/text/"'\0'"/' <<<"$b" #\0 is a special sed operator
 Just 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.
票数 77
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3834839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档