expect返回值给shell_如何获得expect中spawn进程的返回值

报警器参考:人体静电释放报警器

一、返回值校验

返回值校验始终是一个安全可靠软件或者说软件或者说作业的基本流程,无论执行什么工作,都应该告诉使用者这个子进程执行的结果如何,就是通常所说的,你倒是吱一声? 6杂趀xpect来说,它的情况是比较特殊的,它执行ssh执行远程进程的时候,我们在expect中读取的只能是ssh的返回值,而不是通过ssh执行的命令的返回值。

如果要获得ssh执行的远端进程的返回值,这个是用通用的方法就可以了。例如我们执行了一个scp命令,执行之后可以在命令提示符的正则表达式中做特殊处理,方法就是添加一些变量表示是第几次出现命令提示符命令,之后更具次数来执行shell的内置变量 $? 获得刚刚执行的子进程的返回值,再通过senduser或者其它的脚本变量将这个返回值保存起来,在进程退出的时候将这个值返回给执行者。

现在考虑一下对于一个本地进程的返回值如何获得。执行本地命令并不是一个稀缺的现象,例如我们在本地执行ync命令,此时我们希望得到的其实就是这个ync的返回值。

二、网络上的解决方法

网络上常见的说法就是通过

catch wait result

这里的catch并不是expect的命令,而是expect的基础上建立的tcl库中的一个函数,所以在expect的代码中找不到该命令的实现。说到这里,我们可以看到tcl的设计思想对于命令的影响。通常的脚本例如bash,设置一个变量是通过 var=val的方式来定义一个变量的值,而tcl中则是通过 set var val来实现,这和tcl中提出的所有内容都是命令一致的。bash中对于变量赋值的语法其实是通过专门的解析方法来实现的,它会在每个

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值