Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在批处理模式下运行PROLOG脚本文件?(在Linux终端中)_Linux_Ubuntu_Prolog_Batch Processing_Swi Prolog - Fatal编程技术网

如何在批处理模式下运行PROLOG脚本文件?(在Linux终端中)

如何在批处理模式下运行PROLOG脚本文件?(在Linux终端中),linux,ubuntu,prolog,batch-processing,swi-prolog,Linux,Ubuntu,Prolog,Batch Processing,Swi Prolog,我正在尝试使用带有规则的PROLOG脚本文件 在批处理模式下(非交互模式) 在Ubuntu Linux中使用swi prolog, 它在Prolog的交互模式下运行良好 但是如何在批处理模式下运行prolog呢?(非交互模式) 因此,目标是使用查询参数调用swipl 并查看结果 作为终端的输出 理想情况下, 也可以在终端输出中看到, 对于每个输入查询,哪些规则为“真” 我的prologdb.pl文件: likes(john,jane). likes(jane,john). lik

我正在尝试使用带有规则的PROLOG脚本文件
在批处理模式下(非交互模式)

Ubuntu Linux中使用swi prolog
它在Prolog的交互模式下运行良好

但是如何在批处理模式下运行prolog呢?(非交互模式)

因此,目标是使用查询参数调用swipl 并查看结果
作为终端的输出

理想情况下,
也可以在终端输出中看到, 对于每个输入查询,哪些规则为“真”

我的prologdb.pl文件:

likes(john,jane).    
likes(jane,john).    
likes(jack,jane).    

% and a single Rule below:    
friends(X,Y) :- likes(X,Y) , likes(Y, X).    
我尝试在终端中运行:

swipl -s db.pl -t friends(X,Y) 
其中:

friends(X,Y)    
是我要评估的目标/查询 通过db.pl中的规则

预期结果:

john,jane    
具有“真”规则编号的理想输出:

john,jane,Rule01
实际结果:

bash: syntax error near unexpected token `('  
找不到简单的代码示例

如何在序言中实现这一目标

这是因为bash在命令行中处理括号。您可能需要将查询放在引号中:
-t“friends(X,Y)”
。您可能还想看看这个:谢谢您,潜伏者,但是:swipl db.pl-t“friends(X,Y)”单引号或双引号,只需打开交互式版本的swipl…该解决方案没有运气…对。你仍然需要告诉它来实现你的目标。检查我提供的其他链接。你也可以用谷歌搜索“swipl命令行执行”或类似的东西。关于此主题,有几篇有用的帖子。您想在查询后设置“暂停”目标吗?然后prolog将退出,这样您就可以回到正常的终端上了?