在我的 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變數?我需要逃跑"對吧?怎么做?
謝謝
uj5u.com熱心網友回復:
只需添加這些行:
gsub(/\\/, "\\\\", _msg);
gsub(/"/, "\\\"", _msg);
就在cmd變數構造之前。
第一行在\每個\.
第二行在\每個之前添加"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532840.html
標籤:重击awk
上一篇:在系統啟動時啟動本地節點服務器
