当前位置:  技术问答>linux和unix

expect的if分支问题

    来源: 互联网  发布时间:2017-03-19

    本文导语:  为什么expect中send的数据还留在缓存呢?? cp.sh的expect脚本如下: #!/usr/local/bin/expect  # 解释器声明 set timeout -1 # 设置超时时间,单位秒  #scp拷贝指令 spawn .1 expect { "*num*" { send "34r"; exp_continue} "yes/no" { send...

为什么expect中send的数据还留在缓存呢??


cp.sh的expect脚本如下:

#!/usr/local/bin/expect 

# 解释器声明

set timeout -1
# 设置超时时间,单位秒 

#scp拷贝指令
spawn .1

expect {
"*num*" { send "34r"; exp_continue}
"yes/no" { send "yesr"; exp_continue}
"*password*" {send "123456r"}
}
expect eof
# 模拟结束,把控制权交还控制台,如果不加这个,就等于直接退出了
#interact 


1.c的源文件如下:

#include 

int main()
{
int a = 0;
char password[20] = {0};

printf("please input a num:");
scanf("%d", &a);
printf("this num is %d !n", a);

fflush(stdout);
printf("please input a password:");
scanf("%s", password);
printf("this password is %s !n", password);

return 0;
}



运行的结果是:

root@192.168.200.207[root@localhost 1020]# ./cp.sh
spawn ./1
please input a num:34
this num is 34 !
please input a password:34
this password is 34 !
123456
root@192.168.200.207[root@localhost 1020]#

|
please input a num:34
this num is 34 !
please input a password:34
this password is 34 !
123456

这部分内容的问题,分析一下代码:
int main()
{
    int a = 0;
    char password[20] = {0};
    
    printf("please input a num:");
    scanf("%d", &a);    
    printf("this num is %d !n", a);
    
    fflush(stdout);
    printf("please input a password:");
    scanf("%s", password);    
    printf("this password is %s !n", password);

    return 0;
}

当执行到printf("please input a num:");时候,会匹配到num这一行,这时expect会返回一个数字,然后再执行printf("this num is %d !n", a); 这个时候会再一次的匹配上num那一行,同理password也是一样的。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何不使用expect而作出expect最简单的功能?
  • Expect脚本的编写
  • ssh expect自动登录的脚本代码
  • Expect 工具 Expectit
  • expect script,環境變數lang設定?
  • expect中为send语句上加变量的代码
  • 如何判断expect中调用的命令是否成功?
  • 100分请教高手 linux 下安装expect
  • 用expect实现的自动登录到多台服务器的shell脚本
  • expect: bad interpreter: Permission denied
  • 请问如何在expect脚本中实现变量比较?
  • 自动化控制和测试的软件工具 Expect
  • 如何用 expect 输入密码
  • expect使用疑问
  • expect脚本中用exec执行命令时如何忽略命令产生的错误?
  • 求书 Exploring Expect (A Tcl-based Toolkit for Automating Interactive Programs)
  • 请教高手, 如何用expect实现BBS的自动登陆?
  • 学习expect
  • 大伙们有没有用过expect的?
  • [100: 关于expect和tcl] 小生刚刚接到任务,请大家先给个思路 谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3