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
- 你不需要先觸摸該文件
- 你不需要初始化
LINE
變數 - Ctrl+D關閉標準輸入,這使得
read
以非空(假)退出代碼退出