我正在用 bash 编写提交后脚本,我想将消息传递回进行提交的客户端。然而
echo my message >&2
没有返回给客户。甚至可以使用提交后挂钩发回消息吗?
我正在用 bash 编写提交后脚本,我想将消息传递回进行提交的客户端。然而
echo my message >&2
没有返回给客户。甚至可以使用提交后挂钩发回消息吗?
只有当它失败时,Hook 才会显示 STDERR(正如你现在可能看到的那样,hook 不会显示 STDOUT)。因此,您必须从脚本返回非零代码才能将“我的消息”传递给用户(只需在 echo 后添加exit 1 )。
看看这里:
如果 post-commit 钩子返回非零退出状态,则提交将不会中止,因为它已经完成。但是,任何打印到 stderr 的钩子都将被编组回客户端,从而更容易诊断钩子故障。
考虑提交后挂钩会:
任何打印到 stderr 的钩子都将被编组回客户端,从而更容易诊断钩子故障。
您可以检查这是否不是简单的报价问题:
echo "my message" >&2
您可以在这些钩子示例中看到 any echo
to>&2
包含引号。
关于重定向的bash 章节还包括带引号的示例。
但是,正如pmod在他的回答中详细说明的那样,除非脚本的退出状态不同于 0,否则 stderr 消息将不可见,如“ subversion post-commit hook: print an error message that the user can see? ”中所示。
#!/bin/bash
echo "test" >&2
exit 1
我遇到了同样的问题,Apache 和 mod_svn。事实证明,当被编组的文本包含或字符时&
,编组失败。用 替换它们后,文本就通过了。<
>
&
<
>