읽기를 사용하는 Bash 스크립트는 Ctrl+D에서 실행을 중지해야 합니다.

읽기를 사용하는 Bash 스크립트는 Ctrl+D에서 실행을 중지해야 합니다.

Enter누르면 텍스트 파일에 한 줄을 추가하는 스크립트를 작성해야 합니다.

그러나 Ctrl+를 누르면 Dbash에서 루프를 종료해야 합니다 .

touch texttest.txt
LINE="0"
while true; do
    read LINE;
    if [ "$LINE" == "^D" ]; then
            break
    else
            echo "$LINE" >> texttest.txt
    fi
done

현재 비슷한 것이 있지만 대신 Ctrl+를 눌렀을 때 while 루프를 종료하는 방법을 알 수 없습니다 .DEnter

답변1

당신은 너무 많이 생각합니다. 필요한 것은 이것뿐입니다:

cat > texttest.txt

다르게 말하지 않으면 Cat은 STDIN에서 읽습니다. STDIN에서 읽기 때문에 지정하지 않고도 Ctrl제어 문자 +에 반응합니다 . +는 하위 프로세스를 완료할 수 있는 유일한 것이므로 D루프 로 래핑할 필요조차 없습니다.CtrlDcat

답변2

다음을 수행할 수 있습니다.

while read -r LINE ; do
  echo "$LINE" >> texttest.txt
done
  1. 파일을 먼저 터치할 필요는 없습니다.
  2. LINE변수를 초기화할 필요가 없습니다.
  3. Ctrl+Dread널이 아닌(거짓) 종료 코드로 종료 되도록 하는 표준 입력을 닫습니다.

관련 정보