2012-06-24 53 views
1

傳遞給lua腳本的Freeswitch參數是空格分隔的(請參閱http://wiki.freeswitch.org/wiki/Mod_lua#Passing_Arguments)。在Freeswitch中轉義Lua參數

我已經發現你可以用單引號包裝參數,然後忽略這個空間,但是我不能解決如何轉義單引號。

帶空格的參數應該如何傳遞給Lua?

重現問題:

例的Lua腳本:

argumentOne=argv[1]; 
argumentTwo=argv[2]; 
argumentThree=argv[3]; 
argumentFour=argv[4]; 

freeswitch.consoleLog("info", "*******************\n"); 
freeswitch.consoleLog("info", argumentOne); 
freeswitch.consoleLog("info", "\n"); 
freeswitch.consoleLog("info", argumentTwo); 
freeswitch.consoleLog("info", "\n"); 
freeswitch.consoleLog("info", argumentThree); 
freeswitch.consoleLog("info", "\n"); 
freeswitch.consoleLog("info", argumentFour); 
freeswitch.consoleLog("info", "\n"); 
freeswitch.consoleLog("info", "*******************\n"); 

這工作得很好:

[email protected]> luarun luaargumenttest.lua one two 'thr ee' four 
+OK 

[email protected]> 2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 ******************* 
2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 one2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 
2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 two2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 
2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 thr ee2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 
2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 four2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 
2012-06-24 11:56:55.873757 [INFO] switch_cpp.cpp:1197 ******************* 

但我怎麼會在參數值的 「三不歡」 送?

我試過\','',''',還有「和\」,但沒有這些工作。

回答

1

我從FreeSWITCH的代碼看,它看起來像有沒有辦法逃避一個單引號:

這裏mod_lua調用switch_separate_string() https://github.com/FreeSWITCH/FreeSWITCH/blob/ee8c9e869ba0da3d4f620769c1e241be71d99e6f/src/mod/languages/mod_lua/mod_lua.cpp#L156

這裏switch_separate_string電話separate_string_blank_delim(),它只捕獲單引號作爲參數分隔符: https://github.com/FreeSWITCH/FreeSWITCH/blob/ee8c9e869ba0da3d4f620769c1e241be71d99e6f/src/switch_utils.c#L2062

+0

感謝斯坦尼斯拉夫。我將在Jira中提出一個問題,目前我會破解在包裝參數之前從參數值中剝離單引號。 –

+0

您還可以更改工作流程 - 例如,在ESL中捕獲事件並執行代碼 –

1

我試過這個例子,可以逃脫'罰款。 這是在最新的GIT上完成的嗎?

lua q.lua one two 'three\'s a crowd' four 
2012-06-24 13:52:55.376758 [INFO] switch_cpp.cpp:1227 ******************* 
2012-06-24 13:52:55.376758 [INFO] switch_cpp.cpp:1227 one 
2012-06-24 13:52:55.376758 [INFO] switch_cpp.cpp:1227 two 
2012-06-24 13:52:55.376758 [INFO] switch_cpp.cpp:1227 three's a crowd 
2012-06-24 13:52:55.376758 [INFO] switch_cpp.cpp:1227 four 
2012-06-24 13:52:55.376758 [INFO] switch_cpp.cpp:1227 *******************