使用 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+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+D關閉標準輸入,這使得read以非空(假)退出代碼退出

相關內容