2013-11-23 2 views

답변

3

귀하의 문제는 당신이 CTRL-C (SIGINT)를 누르면, mpg123는 그것을 포착 한 상태 0에 반환 그래서 당신의 쉘이 신호를 수신하지 않을 것이다,라는 것이다 따라서이 중단되지 않습니다 루프.

반복 재생이 중단 될 때까지 ctrl-c을 계속 누르면됩니다.

다른 플레이어를 사용하십시오. 예를 들어 mplayerctrl-c에 상태가 1 인 것으로 표시되므로 작동해야합니다.

ls | xargs -d '\n' -n 1 mplayer 
0

당신이 어떤 이유로 while 루프를 선호하는 경우, 예를 들면 :

xargs를 사용하여 좀 더 우아한 방법으로 명령을 다시 작성할 수 말했다 당신은 파일 이름을 프린트하거나 어떻게 든 변경하고 싶다면, 먼저 프로세스를 백 그라운드 처리하고 나서 wait을 보내서 SIGINT (Ctrl + C)를 트랩 할 수있다. waitprocess 대신 SIGINT를 잡을 것이다. :

#!/bin/bash 

find . -type f -print0 | 
while read -r -d '' f; do 
    echo "$f" 
    process "$f" > "$f.processed" & 
    wait $! 
done 

(read -d ''find -print0는 서브 디렉토리를 제외 할 경우 찾을 -maxdepth 1를 추가, 줄 바꿈 및 이것 저것 이상한 파일 이름을 지원합니다)

관련 문제