如何使用命令打开命令行应用程序而不关闭它?

时间:2016-03-31 10:09:54

标签: bash command-line startup expect

我正在尝试编写一个打开命令行应用程序的脚本(在本例中为sagemath),启动时会向管道发送一个特定的命令(附加脚本),而不会在最后关闭应用程序。

我尝试过类似的事情:

#!/bin/bash

echo "load(\"script.sage\")" | sage

当然,这会打开sage加载脚本打印脚本的输出并关闭sage。添加&在最后一行的末尾没有用。

我知道技术上我可以将此脚本添加到启动时加载的脚本列表中,但这不是我想要的。我认为可能会在我的脚本的某个目录上创建一个动态链接,但不确定是否有这样的目录以及它在哪里。

有什么建议吗?

编辑: 我不知道Expect(我是linux的年轻人)。按照马克的建议阅读,我有点设法解决这个问题。如果将来任何人都对此感兴趣,那么这就是诀窍:

#!/usr/bin/expect
set timeout 20
spawn sage
expect "sage:"
send "load(\"script.sage\")\n"
interact

3 个答案:

答案 0 :(得分:1)

  

#!的/ usr / bin中/期望

     

设置超时20

     

产生圣人

     

期待“圣人:”

     

发送“load(\”script.sage \“)\ n”

     

相互作用

答案 1 :(得分:0)

您可以使用“屏幕”,具体取决于您需要运行此脚本的动态程度。有关如何使用屏幕的信息,请参阅http://linux.die.net/man/1/screen

答案 2 :(得分:-1)

你可以:

使用nohup启动程序例如, nohup“load(\”script.sage \“)”|鼠尾草

或者,您可以使用disown命令。