在我的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
变量构造之前。
第一行在每个之前添加
。
第二行在"
之前添加。