2016-04-25 43 views
0

一個不完整的線的沖洗我正在寫一個腳本做類似如下:在bash中,我怎麼能強制打印到終端

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

藉口窮人的bash技能。無論如何,問題在於直到do_stuff完成時纔會打印行的第一部分 - 雖然對我來說很重要,但用戶知道接下來要執行的操作。這是對我很重要,因爲我迂腐,不打印換行符。所以,文本在緩衝區中,不會被刷新。

This question非常相似,但OP還是很滿意,好吧,事情基本上都是這樣。我不是。如果推動來推我甚至願意使用與curses相關的東西(但請記住,畢竟這是一個shell腳本)。

回答

2

我認爲合適的事情做的就是關掉緩衝:

stdbuf -i0 -o0 -e0 <command> 


i = stdin 
o = stdout 
e = stderr 
+0

我只需要'-o0'(也許'-e0'),但是這不會把戲,謝謝。 – einpoklum