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