4

我正在编写一个执行以下操作的脚本:

echo -n "Doing stuff, wait for it... "
do_stuff
(($?==0)) && echo SUCCESS || echo FAILURE

请原谅糟糕的 bash 技能。无论如何,问题是该行的第一部分在完成之前不会被打印do_stuff- 虽然对我来说重要的是用户知道我接下来要运行什么。这对我来说很重要,因为我很迂腐,不要打印换行符。因此,文本在缓冲区中并且不会被刷新。

这个问题非常相似,但是那里的OP对事情的基本方式感到满意。我不是。如果迫不得已,我什至愿意使用与诅咒相关的东西(但请记住,这毕竟是一个 shell 脚本)。

4

1 回答 1

4

我认为适当的做法是关闭缓冲:

stdbuf -i0 -o0 -e0 <command>


i = stdin
o = stdout
e = stderr

在您的特定情况下,您只需要-o0标准输出。

于 2016-04-25T18:09:45.930 回答