在多种不同的 Common Lisp 实现(CLISP、CCL、SBCL)中执行shell命令的函数(转贴)
Category:语言学习原文网址:https://my.oschina.net/freeblues/blog/196902
开始只知道 CLISP 中的是:
(ext:shell …)
然后查了一下,发现又多了解了两种,CCL 和 SBCL 分别有两个函数是:
(run-program …)
(sb-ext:run-program …)
接着继续查,发现有人写出这个很不错的函数,包含了好几种用法:
(defun sh (cmd)
#+clisp
(let ((str (ext:run-shell-command cmd :output:stream)))
(loop for line = (read-line str nil)
until (null line)
do (print line)))
#+ecl
(si:system cmd)
#+sbcl
(sb-ext:run-program "/bin/sh" (list "-c" cmd) :input nil :output *standard-output*)
#+clozure
(ccl:run-program "/bin/sh" (list "-c" cmd) :input nil :output *standard-output*)))
实际举个例子,就以 CCL 为例好了:
CL-USER> (ccl:run-program "/bin/sh" (list "-c" "echo 123") :input nil :output *standard-output*)
123
#<EXTERNAL-PROCESS (/bin/sh -c echo 123)[2596] (EXITED : 0) #x30200197619D>
CL-USER>
http://mip.i3geek.com