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

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

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

하지만 Ctrl+를 D누르면 bash에서 해당 루프를 종료해야 합니다.

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

Ctrl현재 이와 같은 것이 있지만 대신 +를 D누르면 while 루프를 종료하는 방법을 알 수 없습니다 Enter.

답변1

당신은 그것을 지나치게 생각하고 있습니다. 필요한 것은 이것이다:

cat > texttest.txt

Cat은 사용자가 다르게 지정하지 않은 경우 STDIN에서 읽습니다. STDIN에서 읽기 때문에 사용자가 지정하지 않고도 제어 문자 Ctrl+ 에 반응합니다. D그리고 Ctrl+가 하위 프로세스 D 를 완료하는 유일한 것이므로 cat루프로 래핑할 필요조차 없습니다.

답변2

다음이 수행됩니다.

while read -r LINE ; do
  echo "$LINE" >> texttest.txt
done
  1. 파일을 먼저 만질 필요는 없습니다
  2. LINE변수를 초기화할 필요가 없습니다
  3. Ctrl+Dreadnull이 아닌(거짓) 종료 코드로 종료 하는 stdin을 닫습니다.

관련 정보