我试图通过SBCL的sb-ext:run-program在common-lisp中调用外部shell命令。
有关此run-program命令的文档,请访问: http://sbcl.org/manual/index.html 在该部分 7.7.3运行外部程序
该页面不包含示例。通过查看此页面,我想出了如何使用它: stackoverflow examples for sb-ext:run-program
这就是我想要做的......
首先,我为参数定义一个变量:
(defconstant *a-argument* "-lh")
然后我调用一个命令:
(sb-ext:run-program "C:\\Program Files (x86)\\Gow\\bin\\ls.exe"
'(*a-argument*)
:output *standard-output*)
它给了我以下错误:
debugger invoked on a TYPE-ERROR in thread
#<THREAD "main thread" RUNNING {100299C8F3}>:
The value
*A-ARGUMENT*
is not of type
SEQUENCE
但是,如果我这样称呼它:
(sb-ext:run-program "C:\\Program Files (x86)\\Gow\\bin\\ls.exe"
'("-lh")
:output *standard-output*)
然后它的工作原理。唯一的区别是直接使用"-lh"
,而不是*a-argument*
。
所以我的问题是:
我需要做什么,使运行程序调用在参数列表中使用变量?
额外信息:
windows32 2.6.1 7601 i686-pc Intel unknown MinGW
SBCL 1.3.8
但是我也在FreeBSD 10.1上测试过这个问题,我遇到了同样的问题。
答案 0 :(得分:3)
答案是由jkiiski给出的:
我需要更改此电话:
(sb-ext:run-program "C:\\Program Files (x86)\\Gow\\bin\\ls.exe"
'(*a-argument*)
:output *standard-output*)
致电:
(sb-ext:run-program "C:\\Program Files (x86)\\Gow\\bin\\ls.exe"
(list *a-argument*)
:output *standard-output*)