免费注册 查看新帖 |

Chinaunix

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

[系统管理] 恳请大神解决下expect的if语句问题 [复制链接]

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-19 20:20 |只看该作者 |倒序浏览
本帖最后由 jieisme 于 2015-10-19 20:27 编辑

感觉expect真JB难用。
一个小问题,搞了大半天,都没搞定。
expect的语法,真让人头大。创始人真是脑子进水了。
话归正题:
代码没多少
第一套代码是可以正常执行的,
#!/usr/bin/expect
set intf "a";
if { "$intf" == "a" } {
        send_user "a\n"
} else {
        send_user "none\n"
}

第二套代码,就多了一个else if语句,就报错:
wrong # args: no script following " $intf == "s1u" " argument
    while executing

#!/usr/bin/expect
set intf "a";
if { "$intf" == "a" } {
        send_user "a\n"
} else if { "$intf" == "b" }  {

        send_user "b\n"
} else {
        send_user "none\n"
}

就这几行,你说让人崩不崩溃。这基本就没有什么什么变化啊,
就加不加空格的问题,就试了十多分钟。真是气得我不行,哎,不说了,说多了都是泪,大神

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00
2 [报告]
发表于 2015-10-19 20:57 |只看该作者
哎,真是没有人知道吗?

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
3 [报告]
发表于 2015-10-19 22:07 |只看该作者
本帖最后由 tc1989tc 于 2015-10-19 22:12 编辑

please try elseif

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
4 [报告]
发表于 2015-10-20 10:18 |只看该作者
  1. #!/usr/bin/expect
  2. set intf "a";
  3. if { "$intf" == "a" } {
  4.         send_user "a\n"
  5. } elseif { "$intf" == "b" }  {

  6.         send_user "b\n"
  7. } else {
  8.         send_user "none\n"
  9. }
复制代码

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
5 [报告]
发表于 2015-10-20 15:44 |只看该作者
expect 是 tcl 的一个模块;

tcl 里面所有东西都是命令, if 命令用法
  1. # Standard simple if
  2. if {some condition} {
  3.     # Note that the open-brace for the body is on the same line
  4.     # as the if-command and condition.

  5.     some conditionally executed script...
  6. }

  7. # Standard simple if with else clause
  8. if {some condition} {
  9.     some conditionally executed script.
  10. } else {
  11.     some script to execute if the condition is not satisfied.
  12. }

  13. # Standard multi-test if
  14. if {first condition} {
  15.     thing to do if the first condition succeeds
  16. } elseif {second condition} {
  17.     thing to do if the first fails, but the second condition succeeds
  18. } else {
  19.     what to do if none of the conditions match - this one is optional,
  20.     but typically good practice to anticipate unexpected responses
  21. }

  22. # Handling complex (i.e. long) conditions
  23. if {
  24.     this condition stretches over
  25.     multiple lines
  26. } then {
  27.     thing to do if the condition succeeds
  28. }
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00
6 [报告]
发表于 2015-11-20 01:10 |只看该作者
谢谢3楼大神,正解。也谢4楼朋友相助。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [报告]
发表于 2015-11-20 09:31 |只看该作者
以上都是“天神”,报错跟编程内文,不是同一个文档...

wrong # args: no script following " $intf == "s1u" " argument

if { "$intf" == "a" } {
...
} else if { "$intf" == "b" }  {
...

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
8 [报告]
发表于 2015-11-20 09:36 |只看该作者
...

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
9 [报告]
发表于 2015-11-20 13:21 |只看该作者
我之前写expect也是因为} else {写成了
}
else
{
试了半个小时才知道原因。。。

毕竟不像C,C++编译器那么牛啊,有些地方还是固定死的

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00程序设计版块每日发帖之星
日期:2015-11-23 06:20:00每日论坛发贴之星
日期:2015-11-23 06:20:00
10 [报告]
发表于 2015-11-20 13:34 |只看该作者
lol,看来专行专业呀,跨行解决问题确实会浪费精力和时间。跨行的话基础还需要积累才行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP