shell – 如何从命令行运行SWI-Prolog?

前端之家收集整理的这篇文章主要介绍了shell – 如何从命令行运行SWI-Prolog?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法创建一个名为hello.pl的prolog脚本,如下所示:
  1. #!/usr/local/bin/swipl -q -s -t main
  2.  
  3. main:-
  4. write('Hello World\n').

能够像这样从终端运行吗?

  1. $hello.pl
  2. Hello World
  3. $

当我这样做的时候给我这个:

  1. hello.pl: line 3: main:-: command not found
  2. hello.pl: line 4: Syntax error near unexpected token `'Hello World\n''
  3. hello.pl: line 4: ` write('Hello World\n').'

我可以通过在命令行中写这个来获得它的工作:

  1. $swipl -q -f hello.pl -t main
  2. Hello World
  3. $

但是,有没有办法将直脚本作为可执行文件运行?

编辑

还没有能够让这个工作.以下是他的答案中的评论中提到的@Boris命令的输出

  1. $ls -l
  2. total 8
  3. -rwxr-xr-x 1 viatropos staff 235 Aug 26 20:28 example.pl
  4. $cat example.pl
  5. #!/usr/local/bin/swipl
  6.  
  7. :- set_prolog_flag(verbose,silent).
  8.  
  9. :- initialization main.
  10.  
  11. main :-
  12. format('Example script~n'),current_prolog_flag(argv,Argv),format('Called with ~q~n',[Argv]),halt.
  13. main :-
  14. halt(1).
  15. $which swipl
  16. /usr/local/bin/swipl
  17. $swipl --version
  18. SWI-Prolog version 6.6.6 for x86_64-darwin13.1.0
  19. $./example.pl
  20. ./example.pl: line 3: Syntax error near unexpected token `('
  21. ./example.pl: line 3: `:- set_prolog_flag(verbose,silent).'
  22. $

我在Mac OSX 10.9.2,并通过brew安装swipl与homebrew安装swi-prolog –with-libarchive

ISO指令: initialization.这应该工作.
  1. :- initialization main.
  2.  
  3. main :-
  4. write('Hello World\n').

编辑对不起,我跳过了最有趣的细节.这里是一个示例脚本,假设保存在〜/ test / main.pl中

  1. #!/home/carlo/bin/swipl -f -q
  2.  
  3. :- initialization main.
  4.  
  5. main :-
  6. current_prolog_flag(argv,format('Hello World,argv:~w\n',halt(0).

并执行

  1. chmod +x ~/test/main.pl

然后我得到

  1. ~$~/test/main.pl
  2. Hello World,argv:[]
  3.  
  4. ~$~/test/main.pl as,dnj asdl
  5. Hello World,argv:[as,dnj,asdl]

在脚本main.pl中,我使用了源代码构建的swipl路径,没有管理员权限. SWI-Prolog构建过程将bin和lib放在〜/ bin和〜/ lib下

注意:-f标志禁止加载初始化〜/ .plrc,这可能需要更多的“严格控制”执行…

我目前不确定文档页面是否与当前的SW状态是最新的.从some mailing list message起,我自己努力重用thea,似乎命令行标志最近改变了…

猜你在找的Bash相关文章