如何在 sbcl (common-lisp) 中为 sb-ext:运行-program 使用参数?
How can you use parameters in sbcl (common-lisp), for sb-ext:run-program?
我正在尝试通过 SBCL 的 sb-ext:运行-program.
在 common-lisp 中调用外部 shell 命令
有关此 运行 程序命令的文档,可在此处找到:
http://sbcl.org/manual/index.html
在本节中
7.7.3 运行 外部程序
该页面不包含示例。通过查看此页面,我想出了如何使用它:
Whosebug 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 上测试过,我也遇到了同样的问题。
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*)
我正在尝试通过 SBCL 的 sb-ext:运行-program.
在 common-lisp 中调用外部 shell 命令有关此 运行 程序命令的文档,可在此处找到: http://sbcl.org/manual/index.html 在本节中 7.7.3 运行 外部程序
该页面不包含示例。通过查看此页面,我想出了如何使用它: Whosebug 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 上测试过,我也遇到了同样的问题。
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*)