shell执行命令进入其他软件(句柄?)时怎么执行和退出?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
asean
帖子: 164
注册时间: 2012-09-23 13:19
系统: ubuntu 12.04

shell执行命令进入其他软件(句柄?)时怎么执行和退出?

#1

帖子 asean » 2015-08-12 13:40

如题,可能表述的不大清楚,我举个例子,比如我想在sh里

代码: 全选

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

感觉把那些命令集成在shell里自动运行方便些,不知怎样才能达到上述的目的?
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?

#2

帖子 susbarbatus » 2015-08-12 17:07

不太懂, 这个 root (cern root?) 是个交互式的东西?
建议研究下 expect,用于交互式程序的自动化的。
沉迷将棋中……
头像
asean
帖子: 164
注册时间: 2012-09-23 13:19
系统: ubuntu 12.04

Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?

#3

帖子 asean » 2015-08-12 23:33

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 次。
头像
asean
帖子: 164
注册时间: 2012-09-23 13:19
系统: ubuntu 12.04

Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?

#4

帖子 asean » 2015-08-12 23:43

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
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?

#5

帖子 susbarbatus » 2015-08-13 10:22

报这个错是因为这个 root 不是 expect 有效的命令,改成 spawn "root .x test.cpp" 之类的试试看。
沉迷将棋中……
头像
asean
帖子: 164
注册时间: 2012-09-23 13:19
系统: ubuntu 12.04

Re: shell执行命令进入其他软件(句柄?)时怎么执行和退出?

#6

帖子 asean » 2015-08-14 1:16

susbarbatus 写了:报这个错是因为这个 root 不是 expect 有效的命令,改成 spawn "root .x test.cpp" 之类的试试看。
多谢多谢!!! 改成spawn root .x test.cpp就可以了~~
expect真是强大的工具,我会再摸索下的~~
回复