假设 sage 的手册页或其他文档没有专门解决此问题,并且您使用的是 unix/linux/cygwin(ish) shell,您可能会发现 here-documents 会将脚本中的 cmds 提供给 sage . 尝试
#!/bin/bash
#to get into sage shell
/Applications/sage/sage -sh <<EOS
easy_install -U distribute #to install package
exit #to get out of sage shell
EOS
您也可以使用#!/bin/ksh
or#!/bin/sh
和其他作为“she-bang”行,它始终是 shell 脚本的第一行。您需要使脚本文件可执行,使用
chmod 755 ./mySageTalkerScript.sh
并且要么在 PATH 变量中包含脚本的路径,要么通过提供相对路径(如 chmod cmd 中所示)或完整路径,即
/path/to/script/mySageTalkerScript.sh
当您指出还有更多代码需要编写时,并且如果您通过缩进代码来遵循良好实践,并且您使用制表符进行缩进,那么您可以使用缩进整个块
#to get into sage shell
/Applications/sage/sage -sh <<-EOS
easy_install -U distribute #to install package
exit #to get out of sage shell
EOS
注意现在添加在中间的 '-' 字符<<-EOS
。如果您不使用-EOS
,则必须确保关闭EOS
在左边距。在任何一种情况下,您都需要确保EOS
是唯一在线上的东西。最后,EOS 可以是任何字符串,有些人使用!
.,但我发现使用 EndOfScript、EndOfData (EOS, EOD) 之类的缩写会更容易混淆。
如果sage
对此没有响应,请尝试删除-sh
, 或寻找其他对这种情况有意义的命令行选项。它可能是(我认为这是一个错误),sage 不会从 std-in 读取(这是 ahere-document
正在使用的)。sage
查看是否可以从 std-in 读取的最基本测试是echo exit | sage -sh
.
IHTH。