Erh*_*mir 23 lisp bash shell common-lisp exec
如何在Common Lisp程序中执行shell(bash)命令并将输出分配给变量?
Ter*_*aug 12
ASDF提供了RUN-SHELL-COMMAND
许多Common Lisp实现,包括ABCL,Allegro CL,CLISP,Clozure CL,ECL,GCL,LispWorks,SBCL,CMU,XCL和SCL.
它接受一个控制字符串和一个参数列表FORMAT
,并使用兼容Bourne的shell同步执行结果.通过绑定可选流来捕获输出.
tho*_*odg 12
ITA已根据其QITAB伞式项目发布了劣质外壳.
一些可能感兴趣的链接:
git存储库目前在common-lisp.net上托管:
git clone git://common-lisp.net/projects/qitab/inferior-shell.git
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以考虑使用Trivial-shell(url)
(trivial-shell:shell-command "echo foo")
Run Code Online (Sandbox Code Playgroud)
shell-command返回输出,因此您可以将其分配给变量.
在asdf.lisp文件中,您可以阅读:
;;;; 我们可能应该将此功能移至其自己的系统并弃用
;;;; 从asdf包中使用它.但是,这将打破未指定
;;;; 现有软件,所以在存在明确的替代方案之前,我们不能弃用
;;;; 它,即使在它被弃用之后,我们也会支持它
;;;; 年,所以每个人都有时间远离它. - 票价2009-12-01
小智 6
在 sbcl 中:
(sb-ext:run-program "/bin/sh" (list "-c" "whoami") :input nil :output *standard-output*)
Run Code Online (Sandbox Code Playgroud)
这对我来说可以:)