我想编写一个eshell函数来包装一个现有的命令行脚本。为了做到这一点,我希望能够从eshell函数中执行shell命令。我的第一反应是做类似于:
(defn eshell/myfunc ()
(shell-command "mycommand"))
这种方法“有点用”,但存在一些问题。它在一个较差的shell中运行,而不像真正的“exec”命令那样工作。这意味着,在其他情况下,在eshell中的“myfunc”命令似乎会阻塞,而命令正在运行。 “mycommand”的输出被收集并出现在Shell输出缓冲区的末尾,但它不能复制正常shell函数的行为,其中标准输出在运行时出现。
那么,正确的方法是什么?