2017-12-08 2 views
0

Ich möchte eine Reihe von Einträgen in einem Skript durchführen. In meinem Skript verwende ich ein rsh und reinigt den printf-Puffer.Shell: Gibt es eine Möglichkeit zu vermeiden, RSH printf Puffer zu reinigen?

Ich würde 2 Skripte verwenden. Ein Skript ist wie folgt: test1.sh

VAL="" 
while [ "${VAL}" != "x" ] 
do 
    read VAL 
    echo $VAL 
done 

Andere Skript ist wie folgt: test2.sh

VAL="" 
while [ "${VAL}" != "x" ] 
do 
    read VAL 
    rsh -l user 172.30.7.157 "echo test" 
    echo $VAL 
done 

Als ich printf „12 \ n34 \ nx ausführen | test1. sh, das Ergebnis ist:

12 
34 
x 

Wenn ich printf ausführen "12 \ n34 \ nx | test2.sh, ist das Ergebnis:

12 
teste 

teste 

teste 

. 
. 
. 

Was mich denken lässt, dass eine Remote-Verbindung mit dem CIOBUF reinigt.

Gibt es eine Möglichkeit, dieses Problem zu vermeiden?

Antwort

1

Es ist kein Pufferproblem; rsh verbraucht den Eingang für read. Umleitung der Standardeingabe von /dev/null. (Sie können auch einfach den Exit-Status read testen, anstatt mit dem Vergleich VAL mit einem Sentinel-Wert zu experimentieren.)

while IFS= read -r val; do 
do 
    rsh -l user 172.30.7.157 "echo test" < /dev/null 
    echo "$val" 
done 
Verwandte Themen