免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13943 | 回复: 8
打印 上一主题 下一主题

在expect脚本中怎么使用循环结构 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-16 11:57 |只看该作者 |倒序浏览
#!/usr/bin/expect

expect中怎么使用数组,
或者类似for in方式的循环结构。

论坛徽章:
0
2 [报告]
发表于 2009-09-16 12:01 |只看该作者
具体问题是这样的。
比如有值 2 3 4 5 6
我想定义一个变量i,或者使用数组方法
使得i逐个去其中的值,比如i = 2 i =3 i = 4 i =5 i = 6

论坛徽章:
0
3 [报告]
发表于 2009-09-16 13:16 |只看该作者
#!/usr/bin/expect --

for {set i 1} {$i < 10} {incr i 1} {
    send_user "$i "
}

论坛徽章:
0
4 [报告]
发表于 2009-09-16 13:17 |只看该作者
自力更生

foreach  ip { a  b c d e f } {
    puts "$ip"
}

用的是tcl语法,不是shell语法,日。

论坛徽章:
0
5 [报告]
发表于 2011-02-09 16:18 |只看该作者

论坛徽章:
0
6 [报告]
发表于 2011-02-09 18:09 |只看该作者
回复 1# yy_galois

#!/usr/bin/expect -f

foreach ip {
192.168.0.1
192.168.1.1
192.168.1.2
} {
        puts "$ip"
}
exit

论坛徽章:
0
7 [报告]
发表于 2011-05-19 18:40 |只看该作者
#!/usr/bin/expect -f

foreach ip {
192.168.1.11
192.168.1.14
192.168.1.17
}
{
spawn ssh $ip
expect "login*"
send "db2inst1\r"
expect "Password:"
send "db2inst1\r"
expect "*>*"
send "cd /home/db2inst1/weihu/activemobile/sorting\r"
expect "*>*"
send "rm 1.txt\r"
expect "*>*"
send "exit\n"
expect eof
}
exit
执行后报错如下:

wrong # args: should be "foreach varList list ?varList list ...? command"
    while executing
"foreach ip {
192.168.1.11
192.168.1.14
192.168.1.17
}"

论坛徽章:
0
8 [报告]
发表于 2011-05-19 19:20 |只看该作者
回复 2# yy_galois
  1. [19:19:11-Bob@hzling20:~/test/tcl]-(1101)No.101->$ cat for
  2. #!/usr/bin/expect --
  3. for {set i 2} {$i < 7} {incr i} {
  4.     puts "I inside first loop: $i"
  5. }

  6. set i 1
  7. while {$i < 6} {
  8.     incr i
  9.     puts "I after incr: $i"
  10. }
  11. [19:19:16-Bob@hzling20:~/test/tcl]-(1102)No.102->$ ./for
  12. I inside first loop: 2
  13. I inside first loop: 3
  14. I inside first loop: 4
  15. I inside first loop: 5
  16. I inside first loop: 6
  17. I after incr: 2
  18. I after incr: 3
  19. I after incr: 4
  20. I after incr: 5
  21. I after incr: 6
复制代码

论坛徽章:
0
9 [报告]
发表于 2011-05-19 21:09 |只看该作者
foreach ip {
192.168.1.11
192.168.1.14
192.168.1.17
}   {                              ;#    } { 必须在同一行!!!
spawn ssh $ip
expect "login*"
send "db2inst1\r"
expect "Password:"
send "db2inst1\r"
expect "*>*"
send "cd /home/db2inst1/weihu/activemobile/sorting\r"
expect "*>*"
send "rm 1.txt\r"
expect "*>*"
send "exit\n"
expect eof
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP