J'écris un programme Lisp commun qui doit gérer la sortie d'une commande. Cependant, lorsque j'essaie d'utiliser les résultats dans une autre fonction, je n'ai que NIL comme valeur de retour.Utilisation de stdout à partir d'un script shell en lisp commun
Voici la fonction que j'utilise pour exécuter des commandes:
(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)))
qui, lorsqu'il est exécuté par lui-même donne:
CL-USER> (run-command "ls" '("-l" "/tmp/test"))
("-rw-r--r-- 1 petergil petergil 0 2011-06-23 22:02 /tmp/test")
Cependant, quand je le lance à travers une fonction, seule nil est retournée :
(defun sh-ls (filename)
(run-command "ls" '("-l" filename)))
CL-USER> (sh-ls "/tmp/test")
NIL
Comment puis-je utiliser les résultats dans mes fonctions?
Cela fonctionne. Génial! – petergil