Lisp 劣质外壳实时打印输出
我正在使用Lisp 劣质外壳实时打印输出,lisp,common-lisp,sbcl,Lisp,Common Lisp,Sbcl,我正在使用sub劣shell:run启动一个长期运行的任务,该任务通常会失败(这是一个构建验证例程) 我的主要问题是,我无法找到一种方式来查看已启动活动的“实时”输出 我想要实时提要的原因是,如果发生错误,我就看不到输出;我查看了ON-ERROR:键,但结果只表明退出代码为1。这是有道理的,因为这个键似乎是一个回调,用于执行某种恢复操作。但是,如果我的任务失败了,我还想知道它失败的原因,这隐藏在命令的输出中,而命令的输出似乎不可访问 我试着这样调用RUN: (inferior-shell:run
sub劣shell:run
启动一个长期运行的任务,该任务通常会失败(这是一个构建验证例程)
我的主要问题是,我无法找到一种方式来查看已启动活动的“实时”输出
我想要实时提要的原因是,如果发生错误,我就看不到输出;我查看了ON-ERROR:
键,但结果只表明退出代码为1。这是有道理的,因为这个键似乎是一个回调,用于执行某种恢复操作。但是,如果我的任务失败了,我还想知道它失败的原因,这隐藏在命令的输出中,而命令的输出似乎不可访问
我试着这样调用RUN
:
(inferior-shell:run
(pod-command file) ; this generates a string shell
; command from the arg FILE
:on-error #'print ; tells me that the exit code was 1
:output *standard-output* ; default, if I understand correctly
:interactive t) ; this was a shot in the dark
即使是在成功的情况下,在生产过程中(而不是在最后)看到输出仍然是很好的,但这只是一个很好的选择
我才刚刚开始学习Lisp,所以如果我错过了一些明显的东西,我很抱歉
我正在用
sbcl
中的quickload
加载sub劣shell
查看sub劣shell:run
的文档字符串。您可以将输出
和错误输出
设置为:字符串
,这意味着它们将分别作为第一个和第二个返回值。第三个返回值是退出代码。您可以使用多值绑定
绑定这些值。如果:on error
为nil
,则在退出代码为非零的情况下,不会发出错误信号
例如:
CL-USER> (inferior-shell:run "git status"
:on-error nil
:error-output :string
:output :string)
""
"fatal: Not a git repository (or any of the parent directories): .git
"
128
我想他想要的是不同的东西:实时输出,命令运行时的输出。我把这部分解释为“很好”(第三段到最后一段)。通常不需要分析生成的输出。很抱歉,我意外地在一个问题中问了两个问题,并且没有更新标题以反映优先级。我将测试错误输出
键,然后接受答案(如果有效的话)!我尝试了:错误输出:string
和错误输出*标准输出*
,但都不起作用;我还是得到了#
。然而,以你的例子,我确实得到了预期的结果。我想我应该接受你的回答,因为它是正确的;它不能解决我的特殊错误。不,我收回我的错误。完美的解决方案,非常感谢!感谢您的多值绑定
提示;我以前遇到过多次退货,但没有找到处理这些退货的好办法。