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
以非空(假)退出代码退出