写过opensips脚本的同学,往往对函数的传参感到困惑。
例如:
- ds_select_dst()可以接受整数或者值为正数的变量作为第一个参数,但是nat_uac_test()的第一个参数就只能是整数,而不能是变量
- 为什么rl_check()可以接受格式化的字符串,而save()只能接受字符串。
- 为什么
ds_select_dst("1", "4")
作为整数也要加上双引号? - 为什么变量要加上双引号?
ds_select_dst("$var(aa)", "4")
- 为什么
t_on_branch("1")
路由的钩子要加上双引号? - 为什么
route(go_to_something);
这里又不需要加上引号?
ds_select_dst("1", "0");
$var(aa)=1;
ds_select_dst("$var(aa)", "0");
rl_check("gw_$ru", "$var(limit)"); #格式化的gw_$ru
save("location"); #单纯的字符串作为参数
从3.0开始,传参可以更加自然。
- 整数可以直接传参,不用加双引号
do_something(1, 1);
- 输入或者输出的$var(), 不用加双引号,加了反而会报错
do_something($var(a), $var(b));
- 格式化字符串,需要加双引号
do_something(1, "$var(bb)_$var(b)");