2017-12-08 2 views
0

스크립트에서 일련의 항목을 수행하려고합니다. 필자의 스크립트에서는 rsh를 사용하여 printf 버퍼를 정리합니다.쉘 : rsh가 printf 버퍼를 지우는 것을 피할 수있는 방법이 있습니까?

2 개의 스크립트를 사용합니다. 하나의 스크립트는 다음과 같다 :

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

다른 스크립트는 다음과 같이이다 test1.sh : test2.sh

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

내가 의 printf "12 \ N34의 \의 NX 실행하면 | TEST1을. 쉬, 결과는 다음과 같습니다

12 
34 
x 

내가 의 printf를 실행하면 "12 \ n34 \ nx |을 test2.sh, 결과는 다음과 같습니다 나 원격 연결을 사용하면 CIOBUF를 청소 생각하게

12 
teste 

teste 

teste 

. 
. 
. 

.

이 문제를 방지하는 방법이 있습니까?

답변

1

버퍼링 문제가 아닙니다. rshread을위한 입력을 소비합니다. 표준 입력을 /dev/null에서 리다이렉션. 또한 VAL과 센티넬 값을 비교하는 것보다는 read의 종료 상태를 테스트 할 수 있습니다.

while IFS= read -r val; do 
do 
    rsh -l user 172.30.7.157 "echo test" < /dev/null 
    echo "$val" 
done 
관련 문제