在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
答案 0 :(得分:2)
要检查用户是否完全按下返回(又名输入)而不是 Ctrl + d ,只需检查退出代码是否为零(因为 Ctrl + d 和 Ctrl + c 将导致一个非零退出代码)并且该键为空:
if [ $? -eq 0 ] && [ -z "$key" ]
then
break
fi
答案 1 :(得分:0)
如果用户键入<return>
而未键入任何其他内容,$key
将为空字符串。
也要检查空字符串:
if [ -z "$key" ]; then break; fi
根据the man page,-z
告知检查零长度字符串。