In my bash script, at some point, I have some like:
<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()
}
'
so when run() executes, it prints something and then sends a system curl to somewhere!
My problem is that the _msg variable is a string having multiple " so the output could be something like:
"Messages:": "text1", "text2", "text3"
so when I pass it to curl I get sh: 1: Syntax error: Unterminated quoted string.
How can I correctly pass it to the cmd variable?
I'd need to escape " right? How to do that?
Thanks
CodePudding user response:
Just add theese lines:
gsub(/\\/, "\\\\", _msg);
gsub(/"/, "\\\"", _msg);
just before cmd variable construction.
The first line add \ before each \.
The second line add \ before each ".
