我是使用clisp-2.49的lisp新手。
我正在尝试编写lisp来模仿这个相当简单的bash:
for i in $(program-1)
do
some-logic
program-2 $i
done | program-3
有多种方法可以执行程序1和3(run-program,make-pipe-io-stream以及其他程序),所有这些方法都会评估表单并返回一个流供我使用。但是对于程序2,我需要运行程序并告诉表单使用我已经打开的流。我找不到任何形式。我忽略了一些明显的东西吗?是否有一些我不知道的微妙之处?
非常感谢,R。
答案 0 :(得分:1)
您可以使用未记录的函数ext::launch
并将其传递给:output pipe-stream
。
或者,您可以将整个shell脚本作为字符串传递给EXT:RUN-SHELL-COMMAND。
但是,一般来说,Lisp的设计并不是a replacement for shell。通过在shell中处理你的program-*
执行,你可能会更好。