Bashスクリプトの問題 - Enterキーをスキップしました。

Bashスクリプトの問題 - Enterキーをスキップしました。

これは私のスクリプトの一部です。

read main_menu

case "$main_menu" in

    "0" )   exit
            ;;
    "1" )   cp /etc/bamt/cgminer.conf.X11 /etc/bamt/cgminer.conf;
            sudo mine restart;
            ;;

ユーザーにキーを押す必要がないように0、1、2などを入力させるにはどうすればよいですかEnter?実際に数字を入力すると、を押すことなく次のメニューまたは機能に直接移動しますEnter

ここで実装するのに役立ちますか?

while :
do
    echo -e "\n Test script"
    echo -e "\t (0) Exit"
    echo -e "\t (1) Option 1"
    echo -n "Enter choice:"
      read main_menu
      case "$main_menu" in
         "0" ) exit
         ;;
         "1" ) exit
         ;;
esac
done

答え1

バッシュreadサポートオプション数、そのうち-n 1

$ read -n 1 main_menu
1$ echo $main_menu
1

この-nオプションの意味は次のとおりです。

読み込みは読み込み後に返されます。nchars入力の行全体を待つ代わりに文字がありますが、それより少ない場合nchars区切り文字の前の文字を読みます。

-n 1入力の単一文字を読み取って返すように指示するreadので、ユーザーが押すと1停止readし、入力が変数に保存されます。

関連情報