【发布时间】:2014-10-17 11:49:27
【问题描述】:
有没有办法像这样创建一个名为 hello.pl 的 prolog 脚本:
#!/usr/local/bin/swipl -q -s -t main
main:-
write('Hello World\n').
并且能够像这样从终端运行它?
$ hello.pl
Hello World
$
当我这样做时,它会给我这个:
hello.pl: line 3: main:-: command not found
hello.pl: line 4: syntax error near unexpected token `'Hello World\n''
hello.pl: line 4: ` write('Hello World\n').'
我可以通过在命令行上写这个来让它工作:
$ swipl -q -f hello.pl -t main
Hello World
$
但是有没有办法将直接脚本作为可执行文件运行?
编辑
还不能让它工作。这是@Boris 在他的回答中在 cmets 中询问的命令的输出:
$ ls -l
total 8
-rwxr-xr-x 1 viatropos staff 235 Aug 26 20:28 example.pl
$ cat example.pl
#!/usr/local/bin/swipl
:- set_prolog_flag(verbose, silent).
:- initialization main.
main :-
format('Example script~n'),
current_prolog_flag(argv, Argv),
format('Called with ~q~n', [Argv]),
halt.
main :-
halt(1).
$ which swipl
/usr/local/bin/swipl
$ swipl --version
SWI-Prolog version 6.6.6 for x86_64-darwin13.1.0
$ ./example.pl
./example.pl: line 3: syntax error near unexpected token `('
./example.pl: line 3: `:- set_prolog_flag(verbose, silent).'
$
我在 Mac OSX 10.9.2 上,并通过 brew install swi-prolog --with-libarchive 使用自制软件安装了 swipl
【问题讨论】:
-
是的,您的操作系统似乎确实无法识别/尊重 shebang 行。放弃shebang并改用
$ swipl example.pl是完全不可接受的,如我的答案的编辑所示? (您可以尝试将swipl example.pl放在它自己的脚本中,看看是否这样做)。
标签: shell command-line prolog executable swi-prolog