2017-06-22 48 views
1

对不起,如果标题含糊不清,我对Linux相当陌生,我真的不知道该怎么说。我正在创建一个脚本,当我运行它时,我得到它来运行Sage,但是在它完成后,下一个命令不会被执行。我相信这是因为第一对夫妇是在标准的终端(bash的?)和./sage后一切都不是 - 这里的脚本:我可以运行使用2个不同命令行的脚本吗?

#!/bin/bash 

cd /home/alex/Desktop/sage-7.6 
./sage 
#I also tried wait ${!} here but it didn't work 
notebook("/home/alex/Desktop/sage-7.6/projects/zero forcing.sagenb") 

我怎么可能在贤者进入最后一个命令它打开后(假设可能)?谢谢!

编辑:这是我的问题的图片。圣人运行,但我不能让它在打开后执行notebook()命令。 enter image description here

回答

2

您需要运行notebook()作为贤者代码使用-c选项[ here ]。尝试下面的代码。

#!/bin/bash 
/home/alex/Desktop/sage-7.6/sage # You can run the interactive shell directly 
# At this point you have completely exited the sage interactive shell 
# Presumably you want to run the below 'notebook()' after every interactive shell 
# In that case do 
/home/alex/Desktop/sage-7.6/sage -c 'notebook("/home/alex/Desktop/sage-7.6/projects/zero forcing.sagenb")' 
+0

对不起,我不太了解术语,所以我可能会造成一些困惑,notebook()是Sage的一个功能。我想这就像我用脚本启动Python,然后尝试执行一行Python代码 - 我必须先在脚本中启动Sage,但之后的Sage命令无法运行。 –

+0

@AlexHutman请参阅编辑。 – sjsam

+0

嗯,看看我的帖子底部的编辑。它运行着Sage,但命令并没有被执行。这可能是因为该命令试图在Sage完全加载之前执行?我注意到在终端显示屏上花了一两秒钟的时间。这是我最初的想法,用“wait”命令,但我可能做错了。 –

1

我想你真正想要的只是有一个命令启动一个给定名称的笔记本电脑。

事实证明,在许多Linux/Unix应用程序中,命令行中有自动帮助。尝试

/home/alex/.../sage -n -h 

在笔记本上得到一些帮助。特别是,

sage -n -h --notebook=sagenb 

给出了一个很长很长的选项列表,其中第一个显示

sage --notebook=sagenb directory=tp 

会给你在目录tp.sagenb新圣人笔记本电脑服务器。所有这一切说,我还应该指出,萨基恩(可悲)正在慢慢成为一个有利于Jupyter笔记本的传统项目。在圣人8.0从sagenb到Jupyter转换将成为默认,甚至现在你可以做

sage --notebook=jupyter --notebook-dir=/home/foo/bar 

为启动。

+0

感谢您的提示!我想我只是在'home/alex/...的末尾添加了参数而感到困惑......'因为它是一个目录,它让我陷入了一个循环,因为我只是明确地说过'python arg1'。另外,我很高兴,Jupyter笔记本似乎更清洁(让我们希望它的功能也更好!)。 –

相关问题