我在Linux Ubuntu计算机(14.04和16.04)上有一些远程存储库(以 - 裸开头)。这些存储库接收提交,然后 hooks 脚本的事件开始部署应用程序。 deploy使用的脚本是 post-receive 。
但是,我希望这个脚本能够向客户端显示输出实时提交提交,而不仅仅是脚本完成时。
根据this response和this line,只要脚本将新行写入输出,缓冲区就会被卸载。
但是我已经用几种方式尝试了这一点,但都没有效果。我只得到脚本结束时推送提交的客户端的响应。
我已经尝试过了:
#!/bin/bash
echo "A - Starting deploy. \n";
echo "A - Starting deploy. \n\r";
echo "A - Starting deploy. \r";
echo -e "A - Starting deploy. \n";
echo -e "A - Starting deploy. \n\r";
echo -e "A - Starting deploy. \r";
printf "A - Starting deploy. \n";
printf "A - Starting deploy. \n\r";
printf "A - Starting deploy. \r";
# Code for deploy ...
echo "B - Finished deploy.";
但所有产出,包括" A"和" B"在整个脚本结束时,客户端控制台上的仅显示。
我希望在脚本执行时将每一行呈现给客户端。
我相信这是可能的,因为我使用lib s3cmd上传AWS S3资产,在上传时,输出会显示在执行中,而不仅仅是在结尾,如下所示。有趣的是,当s3cmd开始发送输出时,我写的输出也会在响应中发送。
有人可以帮助我吗?