2017-02-05 312 views
0

即时通讯编写一个shell脚本,我需要我的脚本来打开一个xterm窗口运行一个命令,而不关闭xterm的脚本。shell脚本 - 打开xterm窗口执行命令,并继续执行脚本

该代码基本上是一个菜单的巨大情况。

这是我的脚本的例子

... 
example() { 
echo -n "thingy > " 
read thingy 
echo -n "thingy1> " 
read thingyl 
xterm -hold -e *el command* 
menux 
} 
... 

问题:

脚本打开的xterm执行该命令并保持窗口打开,但不会继续脚本,如果我按ctrl + c将其去回到外壳

回答

0

这种变化

nohup xterm -hold -e *el command* & 

会做你想做的。 nohup告诉shell在父进程退出时不发送HUP(1)信号给这个子进程。 &使命令xterm在后台运行,以便脚本可以继续。 man nohup有详细信息。

如果您想取消输出,那么以下内容会将所有输出转移到/dev/null,并且2>&1将确保stderr被定向到相同的位置。如果你想看到你的错误,那么不要执行第二次重定向。

nohup xterm -hold -e *el command* > /dev/null 2>&1 & 

man bash具有重定向的细节。

+0

它的作品,但我怎么能隐藏nohup消息(nohup:追加输出到'nohup.out'),并停止从保存the.out文件? – n0t313

+0

我用这个信息更新了答案。 –

+0

非常感谢! – n0t313