2011-01-08 11 views
3

다음 Bash 스크립트가 있습니다. 키를 누를 때 포즈를 멈추게하거나 루프가 끝나면 멈출 수 있습니까?하지만 키를 누르지 않으면 반복해야합니까?일시 중지 Bash 루프

for i in `cat files` 
do 
    echo $i 
done 

답변

4

처음에는 질문을 잘못 읽은 것 같습니다. 언제든지 Ctrl+Z을 눌러 활성 프로세스를 일시 중단하고 fg 기본 제공으로 다시 시작할 수 있습니다.

i=1 
for f in `cat files`; do 
    echo $f 
    if ((i % 10 == 0)); then # pause every 10 iterations 
     read 
    fi 
    let "i++" 
done 

내 원래 대답했다 :

반복의 숫자 수행 한 후 스크립트 일시 정지를 만들기 위해

, 당신은 카운터 변수와 modulo 운영자 %을 사용할 수 있습니다

read 내장 키를 사용하여 사용자가 RETURN 키 (또는 EOF 키, Ctrl+D)를 누를 때까지 기다릴 수 있습니다.

for i in `cat files` 
do 
    echo $i 
    read 
done 

당신은 아웃 시간을이 순서 read-t 옵션을 사용하여 실행을 계속 할 수 있습니다

for i in `cat files` 
do 
    echo $i 
    read -t 1 
done 

위의 사용자가 RETURN 키를 누르지 않을 경우 일초 후 실행을 재개합니다 .

+0

이렇게하면 각 루프가 시작될 때까지 스크립트가 대기합니다. – newmusicblog

+0

@newmusicblog, 아니요, 그렇지 않습니다. 그럼 다시, 당신은 그냥 귀하의 질문에 그 요구 사항을 추가했습니다 :) –

+0

내가이 스크립트를 사용하는 경우, 그것은 하나의 변수를 반향하고 다음 기다립니다 | || 나는 회귀가 끝날 때까지 무의식적으로 반복 할 필요가있다. – newmusicblog