3

私はbashスクリプトを書いています。メニュー駆動型です。

何らかの理由で、case ステートメントを使用し、すべてのオプションが出力された後、* を使用して、ユーザーが入力する可能性のある他のすべてのものをキャプチャします。しかし、何らかの理由で、私の出力は行われていません。

例:

while [ 1 ]; do
       if [ $MAIN_MENU -eq 1 ]; then
       printMainMenu
       read option
       case "$option" in
            "1" ) printDiskSpace;;
            "2" ) printFreeMemory;;
            "0" ) exit;;
            "*" ) echo "Input not understood.";;
       esac
       fi
done

メニューを使用すると、1、2、または 0 と入力すると、適切な動作が行われます。しかし、たとえば 55 と入力すると、「入力が理解されていません」というメッセージを表示せずにメニューが再表示されます。

ここで何か不足していますか?

ありがとう!

4

2 に答える 2

5

Bash のデフォルトのケースでは使用し*)ないでください。"*")

したがって、あなたの例では:

 *) echo "Input not understood.";;
于 2013-03-12T20:43:59.333 に答える
3

アスタリスクの周りの引用符を削除する必要があることがわかりました...うわー。

ご覧いただきありがとうございます。

于 2013-03-12T20:41:50.513 に答える