免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell 同时循环两个变量 问题 [复制链接]

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-27 19:59 |只看该作者 |倒序浏览
  1. #!/bin/sh
  2. a=`cat ip.txt|awk '{print $1}'`
  3. b=`cat ip.txt|awk '{print $2}'`

  4. for i in $a
  5. do
  6. expect -c"
  7. set ip $i
  8. set password $j
  9. set timeout 3
  10. spawn ssh root@$ip
  11. expect {
  12. "*yes/no" {send "yes\r";exp_continue}
  13. "*Password:" {send "$password\r"}
  14. }
  15. expect eof;"
  16. done


  17. 我要怎样传入$i和$j的值的?

  18. 遇到好几次类似这样要同时循环两个变量的。。。都不知怎么搞


  19. ip.txt的内容 $i获取ip  $j获取密码
  20. [root@localhost expect]# cat ip.txt
  21. 192.16.1.211   centos
  22. 192.16.1.212   qwe123
  23. 192.16.1.213   centos
  24. 192.16.1.214   centos214
  25. 192.16.1.216   centosjava
  26. 192.16.1.240   suselinux
  27. 192.16.1.246   panabit
  28. 192.16.1.250   centos

  29. 我上面的那个脚本应该怎样传入$i和$j的值的?
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-08-27 20:03 |只看该作者
试试:
  1. while read i j
  2. do
  3. expect -c"
  4. set ip $i
  5. set password $j
  6. set timeout 3
  7. spawn ssh root@$ip
  8. expect {
  9. "*yes/no" {send "yes\r";exp_continue}
  10. "*Password:" {send "$password\r"}
  11. }
  12. expect eof;"
  13. done <ip.txt
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
3 [报告]
发表于 2013-08-28 09:24 |只看该作者
楼上的方法最简单,还有另外两个方案可以参考:
  1. [seesea@UC ~]$ cat xx.sh
  2. #!/bin/sh

  3. # 方法一

  4. a=( `cat ip.txt|awk '{print $1}'` )
  5. b=( `cat ip.txt|awk '{print $2}'` )

  6. echo "方法一"
  7. for ((i=0; i<${#a[@]}; ++i))
  8. do
  9.         echo "${a[$i]} -- ${b[$i]}"
  10. done

  11. # 方法二
  12. echo "方法二"
  13. while read -a ar_line
  14. do
  15.         echo "${ar_line[0]} -- ${ar_line[1]}"
  16. done < ip.txt

  17. [seesea@UC ~]$ bash xx.sh
  18. 方法一
  19. 192.16.1.211 -- centos
  20. 192.16.1.212 -- qwe123
  21. 192.16.1.213 -- centos
  22. 192.16.1.214 -- centos214
  23. 192.16.1.216 -- centosjava
  24. 192.16.1.240 -- suselinux
  25. 192.16.1.246 -- panabit
  26. 192.16.1.250 -- centos
  27. 方法二
  28. 192.16.1.211 -- centos
  29. 192.16.1.212 -- qwe123
  30. 192.16.1.213 -- centos
  31. 192.16.1.214 -- centos214
  32. 192.16.1.216 -- centosjava
  33. 192.16.1.240 -- suselinux
  34. 192.16.1.246 -- panabit
  35. 192.16.1.250 -- centos
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2013-08-28 09:45 |只看该作者
本帖最后由 waker 于 2013-08-28 09:46 编辑
  1. #!/bin/sh \
  2. exec expect "$0" ${1+"$@"}
  3. set timeout 3
  4. set infile [ open ip.txt ]
  5. while { [ gets $infile inline ] >= 0 } {
  6. set ip [lindex $inline 0]
  7. set password [lindex $inline 1]
  8. spawn ssh root@$ip
  9. expect {
  10. "*yes/no" {send "yes\r";exp_continue}
  11. "*Password:" {send "$password\r"}
  12. }
  13. expect eof
  14. }
复制代码

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
5 [报告]
发表于 2013-08-28 09:50 |只看该作者
最后的
done<ip.txt什么作用?或者是什么意思?

回复 2# 关阴月飞


   

论坛徽章:
1
水瓶座
日期:2014-12-25 11:15:10
6 [报告]
发表于 2013-08-28 09:58 |只看该作者
循环读取文件内容,明白了回复 5# 水底游


   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
7 [报告]
发表于 2013-08-28 09:59 |只看该作者
回复 5# 水底游


    就是读取ip.txt的内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP