【发布时间】:2013-06-25 12:13:27
【问题描述】:
在 bash 中,是否有可能在按下 [Return] 键时退出不等待用户输入的循环?
这就是我的意思的那种循环。关键是 [q]。我希望它是[返回]。
#!/bin/bash
stty -echo -icanon time 0 min 0 # Don't wait when read the input
i=1
while [ 1 ]; do
echo -ne "$i\r"
((i+=1))
read key
if [ "$key" == "q" ]; then break; fi # If [q] is hit, get out of the loop
done
stty sane # Come back to the classic behavior
exit 0
【问题讨论】:
-
例如,在
vim中,您可以执行<Ctrl+v>,然后点击<return>,您应该会看到^M字符。那就是您要与之比较的那个。 -
您好,实际上@Brice 是正确的,他说当用户在“读取”命令期间仅输入 [Return] 时 $key 无效。但问题是,由于我的脚本的第三行(stty -echo ...),即使用户没有输入任何内容,$key 在“if”位置也是无效的。这个问题恐怕没有办法解决……