2011-02-10 4 views
1

내가 좋아하는 쉘 스크립트가 - 잘 작동하고한 줄씩 읽는 방법과 키보드에서 입력하는 방법?

while read -r line; 
do 
echo $line 
done < file.txt 

을,하지만 난 파일에서 읽어 각 줄 끝에서 사용자에게 입력하라는 메시지를 표시해야합니다. "read"를 추가하려고했지만 작동하지 않습니다.

while read -r line; 
do 
echo $line 
#prompt user here 
read input_user 
done < file.txt 

의견이 있으십니까? awk도 사용하고 있습니다.

+0

귀하의 답변은 잘되어 가고 있습니다. 이제 어느 답변을 선택했는지 혼란 스럽습니다. –

+0

'while'다음에 세미콜론이 필요하지 않습니다. –

+0

고마워. –

답변

3

루프의 read에 다른 FD를 사용하십시오.

while read -u 9 -r line; do 
    echo $line 
    read -p 'Press ENTER ' input_user 
done 9<file.txt 

9<file.txt와 결합 -u 9는이 while 루프에서 읽고 "일반"read 문은 여전히 ​​올 것을 의미한다 :

while read -u 4 -r line 
do 
    echo $line 
    #prompt user here 
    read input_user 
done 4< file.txt 
3

당신은 파일 핸들을 지정 read-u 옵션을 사용할 수 있습니다 표준 입력에서.

일반적으로 사용되지 않은 파일 핸들을 선택할 수 있습니다. 0, 12은 각각 표준 입력, 출력 및 오류입니다. 나는 9에서 시작하여 필요할 때 얼마나 많은 파일 핸들을 한 번에 액세스해야하는지에 따라 내 방식대로 작업하는 경향이 있습니다.

샘플 성적표 :

pax$ ./qq.sh 
line 1 
Press ENTER <ENTER pressed> 
line 2 
Press ENTER <ENTER pressed> 
line 3 
Press ENTER <ENTER pressed> 
line 4 
Press ENTER <ENTER pressed> 
pax$ _ 
1

당신은 정말 상관없이 리디렉션의 첨부 터미널에서 읽을 키보드,

while read -r line; do 
    echo $line 
    #prompt user here 
    read input_user </dev/tty 
done <file.txt 

을 의미합니다.

관련 문제