我正在尝试编写一个打开命令行应用程序的脚本(在本例中为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
答案 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命令。