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

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

Enterクリックすると、テキストファイルに1行を追加するスクリプトを作成する必要があります。

ただし、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

特に言わないと、キャットはSTDINで読みます。 STDINから読み取るため、指定せずにCtrl制御文字+に反応します。 +はサブプロセスを完了できる唯一のものなので、Dループでラップする必要さえありません。CtrlDcat

答え2

次のことができます。

while read -r LINE ; do
  echo "$LINE" >> texttest.txt
done
  1. ファイルを最初にタッチする必要はありません。
  2. LINE変数を初期化する必要はありません。
  3. Ctrl+DreadNULL以外の(偽)終了コードで終了する標準入力を閉じます。

関連情報