我想从makefile评估脚本并退出,像这样
mit-scheme --load "fact.scm"
但是,在它评估文件之后,它并没有退出,并且出现了 repl;如果我尝试(exit)
原语,它会要求确认是/否。有可能解决这个问题吗?
我想从makefile评估脚本并退出,像这样
mit-scheme --load "fact.scm"
但是,在它评估文件之后,它并没有退出,并且出现了 repl;如果我尝试(exit)
原语,它会要求确认是/否。有可能解决这个问题吗?
只需让我们的命令自动关闭 mit-scheme 进程的标准输入,例如
echo | mit-scheme --load sample.scm
我们可以将其扩展为脚本函数;这是我不熟练的实现:
function mschm () {
IFS=""
for arg in $@
do
echo | mit-scheme --load $arg
done
}
对于 Unix mit-scheme 通过重定向读取输入文件:
mit-scheme < /usr/cph/foo.in > /usr/cph/foo.out 2>&1 &
您可以将--quiet
参数添加到mit-scheme
命令以抑制默认输出。否则,这是 Charlie Forthmount 功能的一个婴儿床(尽管它只加载一个文件):
run-mit-scheme ()
{
echo | mit-scheme --quiet --load $1;
# Add an extra newline
echo
}
这行得通;至少在 11.2 下,我没有收到任何确认提示(exit)
:
scheme --quiet --load filename --eval '(exit)'
我有一个方便的 shell 函数,它提供了一种伪 Python 调用体验:没有 args 它将我放入 REPL,但如果有一个参数,第一个参数将被视为脚本名称,任何后续 args 都会变成(command-line-arguments)
. 这是定义;正如所写的那样,它可以在 bash 或 zsh 中工作,并且通过将 更改scm()
为function scm
(或删除local
,但它会草率地留下$prog
您的 shell 中定义的 var),它也可以在 ksh 中工作:
scm() {
if (( $# )); then
local prog=$1
shift
scheme --quiet --load "$prog" --eval '(exit)' -- "$@"
else
scheme
fi
}