在其他环境中从shell脚本运行命令

时间:2012-08-14 19:54:06

标签: shell

我有一个界面非常有限的程序(以前从事过它的研究员没有正确开发),因为它是一些建筑研究原型,我不知道是否允许我公开命名,所以让我们称之为程序 x

在编写执行命令x时导出适当的环境变量后,终端提示符将更改为x(类似于键入mysql时所发生的情况)。

现在我必须在运行程序x之前做一些初步的活动,并且在这个程序完成它应该做的之后我必须做一些清理和重新安排的事情。另外,我需要运行需要在x的环境中运行一些命令。

我已经编写了代码,如果我将其粘贴到终端中,那么它就可以了,但是如果我运行与shell脚本相同的代码,那么它执行x然后不执行以下命令。是否有任何解决方法。

我完全很困惑如何做到这一点。任何帮助表示赞赏。如果我没有让我足够清楚并且您需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

你应该研究Expect。它可以为您自动执行重复性任务。

如果您仔细研究,可能与您需要的相似:

#!/usr/bin/expect
spawn bash
set fp [open cmdlist r]
while {[gets $fp line] != -1} {
  expect "\\$"
  send "$line\r"
}

答案 1 :(得分:0)

没有。如果x允许您指定要执行的命令,或者x在通过stdin提供命令后有某种方式退出到交互模式,那么您可以使用其中任何一种。尝试任何其他方式可能是不可靠的。