read を使用する Bash スクリプトは Ctrl+D で実行を停止する必要があります

read を使用する 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+が押されたときに while ループを終了する方法がわかりません。DEnter

答え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+Dstdin を閉じ、readnull 以外の (false) 終了コードで終了します。

関連情報