有没有办法创建一个名为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命令的输出:
$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安装swipl与homebrew安装swi-prolog –with-libarchive
ISO指令:
initialization.这应该工作.
原文链接:https://www.f2er.com/bash/385820.html:- initialization main. main :- write('Hello World\n').
编辑对不起,我跳过了最有趣的细节.这里是一个示例脚本,假设保存在〜/ test / main.pl中
#!/home/carlo/bin/swipl -f -q :- initialization main. main :- current_prolog_flag(argv,format('Hello World,argv:~w\n',halt(0).
并执行
chmod +x ~/test/main.pl
然后我得到
~$~/test/main.pl Hello World,argv:[] ~$~/test/main.pl as,dnj asdl Hello World,argv:[as,dnj,asdl]
在脚本main.pl中,我使用了源代码构建的swipl路径,没有管理员权限. SWI-Prolog构建过程将bin和lib放在〜/ bin和〜/ lib下
注意:-f标志禁止加载初始化〜/ .plrc,这可能需要更多的“严格控制”执行…
我目前不确定文档页面是否与当前的SW状态是最新的.从some mailing list message起,我自己努力重用thea,似乎命令行标志最近改变了…