在通用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
如何在函数中使用结果?     
已邀请:
        尝试这个:
(defun sh-ls (filename)
       (run-command \"ls\" (list \"-l\" filename)))
\'(\“-l \”文件名)引用了列表和符号\'filename \',而不是评估文件名。     
        您还可以在sexpr之前和文件名之前使用反引号`进行评估:
(defun sh-ls (filename)
       (run-command \"ls\" `(\"-l\" ,filename)))
    

要回复问题请先登录注册