在awk模式中转义字符串中的双引号



在我的bash脚本中,在某些地方,我有如下内容:

<mycommand> | awk '
...
$1 == "array" { test = 1 }
END { if (test) run() }
function run() {
print "Messages:", _msg
cmd="curl -s ""URL"" -F "param1="_param1"" -F "message="_msg"" > /dev/null "
system(cmd);
fflush()
}
'

所以当run()执行时,它打印一些东西,然后将系统curl发送到某个地方!

我的问题是_msg变量是一个具有多个"的字符串,因此输出可能是这样的:

"Messages:": "text1", "text2", "text3"

所以当我把它传递给curl时,我得到sh: 1: Syntax error: Unterminated quoted string

我怎样才能正确地将它传递给cmd变量?我需要逃离",对吧?怎么做呢?

感谢

只需添加以下几行:

gsub(/\/, "\\", _msg);
gsub(/"/, "\"", _msg);

cmd变量构造之前。

第一行在每个之前添加

第二行在"之前添加

最新更新