2016-10-09 2 views
0
#!/bin/bash 
while [ 1 ] 
do 
read -s -n 1 key 
echo -n $key && echo -n $key >> log 
done 

나는 run.sh 등이 쉘을 저장하고 I 입력 문자가 매우 빠르게, 콘솔 에 문자열이 때때로 로그 파일에 문자열이 다른 경우 "을 ./run.sh"사용하여 실행합니다.Linux 셸에서 일부 명령을 건너 뛰는 이유는 무엇입니까?

./run.sh 
dhassudhasfuadhasfuash 
ctrl+c 
cat log 
dhasudhasfuadhasfuash 

설명 방법?

+0

'-n 1'은 행을 버퍼링하지 않고 읽습니다. 로그 파일에 각 문자를 별도로 쓰지 않고 대신 변수에 저장하고 로그 파일에 입력하면 더 이상 문자가 누락되지 않거나 아니면 단지 문자 만 가질 수 있습니다 매우 드물다. – user1934428

+0

이 이상한 것을 확인하기 위해 PC에서해볼 수 있습니다. – luchy0120

+0

내 제안을 시도 했습니까? – user1934428

답변

0

이상하게 들리 겠지만, 당신은 루프 이전에 stdin으로 작성한 경쟁 조건에 대해 읽기 명령으로 되돌아 갈 수있는 기회가 왔음을 알 수 있습니다.

어떻게 ... 자동 옵션을 사용하지 않고 스크립트를 시도하므로이 점 문자를 읽기가되고있는에 볼 수 있습니다에 대한

read -p " reading:" -n 1 key 

하는 당신이 독서 같은 것을 얻을 것이라고 확신하기 : dd 읽기 : hh 읽기 : aa 읽기 : sss 읽기 : ....

관련 문제