2

在 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
4

2 回答 2

2

要检查用户是否准确按下Return(aka. Enter)而不是Ctrl+之类d的东西,只需检查退出代码是否为零(因为Ctrl+dCtrl+c将导致非零退出代码)并且该键是否为空:

if [ $? -eq 0 ] && [ -z "$key" ]
then
    break
fi
于 2013-06-25T12:48:59.223 回答
0

如果用户键入<return>而没有键入任何其他内容,$key则将是一个空字符串。

也只需检查空字符串:

if [ -z "$key" ]; then break; fi

根据手册页-z告诉检查零长度字符串。

于 2013-06-25T12:17:01.753 回答