Использовать существующий поток clisp

Я новичок в использовании lisp, использующий clisp-2.49.

Я пытаюсь написать 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 мне нужно запустить программу и указать форме использовать поток, который я уже открыл. Я не могу найти форму для этого. Я что-то упустил из виду? Есть ли какая-то тонкость, о которой я не знаю?

Большое спасибо, Р.

1 ответ

Решение

Вы можете использовать недокументированную функцию ext::launch и передать :output pipe-stream,

Кроме того, вы можете передать весь сценарий оболочки в виде строки в EXT: RUN-SHELL-COMMAND.

Однако, вообще говоря, Lisp не предназначен для замены оболочки. Вы, вероятно, были бы лучше, жонглируя program-* исполнение в оболочке.

Другие вопросы по тегам