在通用Lisp中使用shell脚本中的stdout
我正在编写一个通用的Lisp程序,该程序需要处理命令的输出。但是,当我尝试在另一个函数中使用结果时,我只会得到一个NIL作为返回值。
这是我用来运行命令的函数:
(defun run-command (command &optional arguments)
(with-open-stream (pipe
(ext:run-program command :arguments arguments
:output :stream :wait nil))
(loop
:for line = (read-line pipe nil nil)
:while line :collect line)))
当其自身运行时,它给出:
CL-USER> (run-command \"ls\" \'(\"-l\" \"/tmp/test\"))
(\"-rw-r--r-- 1 petergil petergil 0 2011-06-23 22:02 /tmp/test\")
但是,当我通过函数运行它时,仅返回NIL:
(defun sh-ls (filename)
(run-command \"ls\" \'( \"-l\" filename)))
CL-USER> (sh-ls \"/tmp/test\")
NIL
如何在函数中使用结果?
没有找到相关结果
已邀请:
2 个回复
系漏
\'(\“-l \”文件名)引用了列表和符号\'filename \',而不是评估文件名。
癸痊醒