2016-04-25 18 views
0

gedruckt ich ein Skript zu schreiben, die in etwa wie folgt funktioniert:In der bash erzwingen Wie kann ich einen Flush einer unvollständigen Zeile an das Terminal

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

Excuse die armen bash Fähigkeiten. Wie dem auch sei, das Problem ist, dass der erste Teil der Zeile nicht gedruckt bekommt bis do_stuff getan wird -, während es mir wichtig ist, weiß der Benutzer, was als nächstes ich laufen. Es ist auch wichtig für mich, da ich pedantisch bin, nicht eine neue Zeile zu drucken. Der Text befindet sich also im Puffer und wird nicht gelöscht.

This question ist sehr ähnlich, aber OP war zufrieden mit, na ja, wie die Dinge sind im Grunde. Ich bin nicht. Wenn es hart auf hart kommt bin ich sogar bereit, etwas zu verwenden, Flüche bezogene (aber nicht vergessen, das ein Shell-Skript, nachdem alle).

Antwort

2

ich denke, die entsprechende Sache zu tun Pufferung auszuschalten ist:

stdbuf -i0 -o0 -e0 <command> 


i = stdin 
o = stdout 
e = stderr 
+0

I '-o0' nur brauchen (und vielleicht' -e0'), aber dies funktioniert der Trick, danke. – einpoklum