1

Freeswitchでは、luaスクリプトに渡される引数はスペースで区切られます(http://wiki.freeswitch.org/wiki/Mod_lua#Passing_Argumentsを参照)。

引数を一重引用符で囲むことができることを理解しました。これにより、スペースは無視されますが、一重引用符をエスケープする方法を理解することはできません。

スペース付きの引数を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");

これは正常に機能します。

freeswitch@internal> luarun luaargumenttest.lua one two 'thr ee'  four
+OK

freeswitch@internal> 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 *******************

しかし、引数の値「3人の群衆」をどのように送信しますか?

\'、''、'''、および"と\ "を試しましたが、これらの作業はありません。

4

2 に答える 2

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

于 2012-06-24T11:35:23.287 に答える
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 *******************
于 2012-06-24T21:00:48.267 に答える