【求助】请问如何实现可以把某些函数做成可以在.cfg之类的文件中可以调用的呢?

【求助】请问如何实现可以把某些函数做成可以在.cfg之类的文件中可以调用的呢?

在某些.cfg的配置过程中,我们有的时候可以调用特定的函数。请问如何实现可以把某些函数做成可以在.cfg之类的文件中可以调用的呢?      
把你公用的函数放在一个文件如 foo.sh 中, 如果想在 bar.sh 中使用那些函数就先 source foo.sh:
复制内容到剪贴板
代码:
# file: foo.sh

... function definitions ...

# file: bar.sh

source foo.sh

... calling functoins defined in foo.sh ...
      
多谢版主回复。
我觉得我遇到的问题比你说的要麻烦,整个project中有.lex, .cfg, .y。按照你的思路查资料后,发现又涉及到词法分析器的部分。对于.lex, .cfg, .y,能不能再给点意见呢?      
不懂你在说什么, 俺还以为是 shell 呢, 怎么还有 lex, yacc 之类?      
不好意思,我也不知道这个问题是属于哪个方面的,看SER源码时一直被这问题困惑着,所以跑过来问问。若要是文不对坛的话敬请见谅,但请顺便说一下哪里是合适的地方?谢谢!      
  
这个是解释和编译领域的内容吧?也是我的盲点,所以也帮不到你什么。。。
  
题外话:斑竹大人^^,你是不是已经对m4宏非常熟悉了?      
[QUOTE=forKOne]不好意思,我也不知道这个问题是属于哪个方面的,看SER源码时一直被这问题困惑着,所以跑过来问问。若要是文不对坛的话敬请见谅,但请顺便说一下哪里是合适的地方?谢谢![/QUOTE]
确切的讲俺不是很明白你的意图
.cfg 什么东东? 配置文件? 怎么还能调用别的函数?
lex 和 yacc 的 source file 不能直接用的, 如何被调用?

SER 什么东东?      
[QUOTE=锈迹斑斑]  
题外话:斑竹大人^^,你是不是已经对m4宏非常熟悉了?[/QUOTE]
入门儿一点点, far from“非常熟悉”      
[CODE][/CODE] [QUOTE][/QUOTE] [QUOTE=dearvoid]确切的讲俺不是很明白你的意图
.cfg 什么东东? 配置文件? 怎么还能调用别的函数?
lex 和 yacc 的 source file 不能直接用的, 如何被调用?

SER 什么东东?[/QUOTE].cfg是配置文件。SER是一种服务器,voip方面的。
下面是.cfg的部分内容:
[CODE]
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
record_route();
if(src_ip == 10.23.40.204){
forward_tcp(10.23.40.7,5060);
}
else {
forward_udp(10.23.40.204,5060);
}
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
[/CODE]
里面的forward_tcp(), forward_udp(),在实际的源码里是找不到他的直接实现的。
但在cfg.y中又有这样的表述:
[CODE]cmd:
FORWARD_UDP LPAREN ip RPAREN { $$=mk_action( FORWARD_UDP_T,
                         IP_ST,
                         NUMBER_ST,
                         (void*)$3,
                         0);
                 }


| FORWARD_TCP LPAREN ip RPAREN { $$=mk_action( FORWARD_TCP_T,
                         IP_ST,
                         NUMBER_ST,
                         (void*)$3,
                         0);
                 }

        | FORWARD_TLS LPAREN ip RPAREN {
                 #ifdef USE_TLS
                 $$=mk_action( FORWARD_TLS_T,
                         IP_ST,
                         NUMBER_ST,
                         (void*)$3,
                         0);
                 #else
                 $$=0;
                 yyerror("tls support not "
                         "compiled in");
                 #endif
                 }

;

%%
[/CODE]
在.lex中又有[CODE]/* action keywords */
FORWARD forward
FORWARD_TCP forward_tcp
FORWARD_UDP forward_udp
FORWARD_TLS forward_tls[/CODE]
好了,不絮叨了,看到这可能会烦的。大家随便参考一下好了。      
看来你不清楚 lex/yacc 是干什么用的 伪问题