根据任何命令的stdout / stderr的字符串匹配触发zsh函数?

时间:2014-08-08 17:35:09

标签: zsh

这令人惊讶地难以搜索。 我唯一能找到的是TRAP *功能,它可以通过各种信号触发。

但我真的想要观看所有stdout / stderr,并且如果某个字符串匹配则会有一个函数触发器。

(示例:刷新kerberos凭据。命令失败并发出标准错误消息,指示我需要进行身份验证。我想自动运行命令来执行此操作;)

1 个答案:

答案 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实用程序:“与交互式程序的程序对话”。