如何在双引号内转义双引号内转义双引号?
How to escape double quotes inside escaped doubles quotes inside double quotes?
我尝试执行以下命令:
su -l user1 -c "hive -e \"ALTER TABLE schema1.table1 DROP IF EXISTS PARTITION (att1=\"$val\");\""
我收到错误:
FAILED: ParseException line 1:81 cannot recognize input near 'val1' ')' '<EOF>' in constant
所以这里的问题是由于第2层嵌套双引号,中间有变量$val
,其值为val1
.
你能帮我解决一下吗?最好是给我一个嵌套引号的规则。
在这种特殊情况下,您可以使用单引号代替内部(当前已转义的)双引号,因为双引号内的单引号一点也不特殊。
su -l user1 -c "hive -e 'ALTER TABLE schema1.table1 DROP IF EXISTS PARTITION (att1=\"$val\");'"
在一般情况下,反斜杠转义不能总是避免死亡。一般的报价规则非常简单;单引号之间的文本被逐字引用,而双引号较弱但允许您反斜杠不应被 shell.
触及的内容
我尝试执行以下命令:
su -l user1 -c "hive -e \"ALTER TABLE schema1.table1 DROP IF EXISTS PARTITION (att1=\"$val\");\""
我收到错误:
FAILED: ParseException line 1:81 cannot recognize input near 'val1' ')' '<EOF>' in constant
所以这里的问题是由于第2层嵌套双引号,中间有变量$val
,其值为val1
.
你能帮我解决一下吗?最好是给我一个嵌套引号的规则。
在这种特殊情况下,您可以使用单引号代替内部(当前已转义的)双引号,因为双引号内的单引号一点也不特殊。
su -l user1 -c "hive -e 'ALTER TABLE schema1.table1 DROP IF EXISTS PARTITION (att1=\"$val\");'"
在一般情况下,反斜杠转义不能总是避免死亡。一般的报价规则非常简单;单引号之间的文本被逐字引用,而双引号较弱但允许您反斜杠不应被 shell.
触及的内容