Bash

使用讀取的 Bash 腳本需要在 Ctrl+D 上停止執行

  • October 13, 2014

我需要編寫一個腳本,如果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而不是Enter.

你想多了。你只需要這樣:

cat > texttest.txt

如果您沒有告訴它不同,Cat 將從 STDIN 讀取。由於它是從 STDIN 讀取的,它會對控製字元Ctrl+做出反應,D而無需您指定它。而且由於Ctrl+D 是唯一可以完成cat子流程的東西,因此您甚至不需要將其包裝在一個循環中。

以下會做:

while read -r LINE ; do
 echo "$LINE" >> texttest.txt
done
  1. 您無需先觸摸文件
  2. 你不需要初始化LINE變數
  3. Ctrl+D關閉標準輸入,read使用非空(假)退出程式碼退出

引用自:https://unix.stackexchange.com/questions/161727