当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : shell执行命令进入其他软件(句柄?)时怎么执行和退出?
帖子发表于 : 2015-08-12 13:40 
头像

注册: 2012-09-23 13:19
帖子: 164
系统: ubuntu 12.04
送出感谢: 28
接收感谢: 0 次
如题,可能表述的不大清楚,我举个例子,比如我想在sh里
代码:
#!/bin/bash
root .x test.cpp
.q

想达到“用cern root 执行test.cpp然后退出”这样的目的,但是它执行完root .x test.cpp之后就停留在 root [1] 那里了,等着我手动去输入.q才能结束,结束之后才想执行第3行的.q,这时已没有意义。。
或另外的例子,想在shell文件里 “用vim 新建一个文件,输入简单字符后保存退出”

感觉把那些命令集成在shell里自动运行方便些,不知怎样才能达到上述的目的?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?
帖子发表于 : 2015-08-12 17:07 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
不太懂, 这个 root (cern root?) 是个交互式的东西?
建议研究下 expect,用于交互式程序的自动化的。


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


页首
 用户资料  
 
3 楼 
 文章标题 : Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?
帖子发表于 : 2015-08-12 23:33 
头像

注册: 2012-09-23 13:19
帖子: 164
系统: ubuntu 12.04
送出感谢: 28
接收感谢: 0 次
susbarbatus 写道:
不太懂, 这个 root (cern root?) 是个交互式的东西?
建议研究下 expect,用于交互式程序的自动化的。


首先非常感谢坛友的回复!

root 就是一个科研计算软件,可以编译一些类C++的代码 画图什么的,在linux下通常是命令模式执行的。
只是通常命令模式下是 在“usrname@localhost:"后面输入命令, 但是当输入root之后,我们就得在root[n]:后面输入root命令了,之后.q退出root回到usrname@localhost的常规命令输入模式。。。 我觉得跟vim有点像。。

或者换个说法,怎么在shell 文件里 调用vim 去编辑一个文件,并退出??
我知道sh有自己的编辑文本的命令,但是我偏偏想这么做(sh确实能独立编辑文本,但是总不能指望它直接完成一切事情吧?会调用其他程序终归更好把?)


最后由 asean 编辑于 2015-08-12 23:46,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?
帖子发表于 : 2015-08-12 23:43 
头像

注册: 2012-09-23 13:19
帖子: 164
系统: ubuntu 12.04
送出感谢: 28
接收感谢: 0 次
susbarbatus 写道:
不太懂, 这个 root (cern root?) 是个交互式的东西?
建议研究下 expect,用于交互式程序的自动化的。

我试了expect
代码:
#!/usr/bin/expect -f
  2 set timeout 30
  3 /usr/local/bin/root .x test.cpp
  4 expect "(int)0"
  5 send ".q"
  6 interact

但是直接显示
代码:
wesley@wesley-Rev-1-0:~⟫ ./test.sh
invalid command name "/usr/local/bin/root"
    while executing
"/usr/local/bin/root .x test.cpp"
    (file "./test.sh" line 3)


我是试了root .x test.cpp 不行才换/usr/local/bin/root的,结果还是不行。。
不知道为什么在系统里可以正常运行的命令在expect里面无法执行?

另外附一张root正常运行的图:
附件:
sh.png
sh.png [ 147.37 KiB | 被浏览 902 次 ]



附件:
sh.png
sh.png [ 147.37 KiB | 被浏览 902 次 ]

页首
 用户资料  
 
5 楼 
 文章标题 : Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?
帖子发表于 : 2015-08-13 10:22 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
报这个错是因为这个 root 不是 expect 有效的命令,改成 spawn "root .x test.cpp" 之类的试试看。


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org



_________________
评价: 3.7% asean
 
页首
 用户资料  
 
6 楼 
 文章标题 : Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?
帖子发表于 : 2015-08-14 1:16 
头像

注册: 2012-09-23 13:19
帖子: 164
系统: ubuntu 12.04
送出感谢: 28
接收感谢: 0 次
susbarbatus 写道:
报这个错是因为这个 root 不是 expect 有效的命令,改成 spawn "root .x test.cpp" 之类的试试看。

多谢多谢!!! 改成spawn root .x test.cpp就可以了~~
expect真是强大的工具,我会再摸索下的~~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Bing [Bot] 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译