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(別名) を押したことを確認するには、終了コードがゼロであること ( +と+はゼロ以外の終了コードになるため) と、キーが空であることを確認します。EnterCtrldCtrldCtrlc

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

ユーザー<return>が他に何も入力せずに入力した場合$key、空の文字列になります。

空の文字列もチェックしてください:

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

man pageに従って、長さゼロ-zの文字列のチェックを指示します。

于 2013-06-25T12:17:01.753 に答える