这令人惊讶地难以搜索。 我唯一能找到的是TRAP *功能,它可以通过各种信号触发。
但我真的想要观看所有stdout / stderr,并且如果某个字符串匹配则会有一个函数触发器。
(示例:刷新kerberos凭据。命令失败并发出标准错误消息,指示我需要进行身份验证。我想自动运行命令来执行此操作;)
答案 0 :(得分:0)
如果未通过管道连接shell,shell不会看到命令的stdout / stderr。因此,您需要将stdout / stderr重定向到zsh函数。但是你也可以将它们发送到你的zsh函数和其他地方。例如:
your_command 2>&1 | tee >(your_zsh_function)
或
your_command |& tee >(your_zsh_function)
或
your_command >>(your_zsh_function) >>/dev/tty 2>&1
your_zsh_function
将grep其输入以进行字符串匹配。缺点是你可能有缓冲问题。
但是关于你的例子,如果我理解正确,你可能想要使用expect
实用程序:“与交互式程序的程序对话”。