입력 파일의 EOF에 도달하면 스크립트를 종료하는 방법은 무엇입니까?

입력 파일의 EOF에 도달하면 스크립트를 종료하는 방법은 무엇입니까?

스크립트 파일에서 입력을 받아야 합니다.

  $ ./script < input.txt 

내 스크립트는 무한 while 루프를 실행하며 를 눌러야만 종료할 수 있습니다 ctrl-d. ctrl-dscript.sh가 발견되면 자동으로 종료되도록 input.txt에 어떻게 추가합니까 ?

 while true;
 do
   echo 'blah blah'
   read i      # takes from file 
   case $i in
   a ) 
          echo 'blah blah'
          read j #takes from file 
   .......
   *)     echo 'invalid option'
          continue
      ;;
   esac
 done

이 루프는 사용자가 ctrl-D를 누르거나 input.txt의 끝에 도달할 때까지 계속되어야 합니다.

답변1

read상황에 따라 다음을 사용하십시오 while.

while read -r a; do
  echo 'blah blah'
  case "$a" in
    a)
      echo 'blah blah'
      read -r b
      echo "line: $b"
      ;;
    *)
      echo 'invalid option'
      continue
      ;;
  esac
done

파일 끝에 도달하면 루프가 종료됩니다.

답변2

스크립트가 먼저 무엇을 하는지 살펴보는 것이 좋을 것입니다. 이와 같은 파일을 읽을 때 다음을 사용하여 파일의 내용을 읽을 수 있습니다.하지만반지:

while read p; do
   echo $p
done <&0

이 루프는 파일의 한 줄을 변수에 할당합니다.즉시. 루프 끝에 있는 리디렉션 연산자에 유의하세요. 이는 표준 입력을 리디렉션합니다.

관련 정보