0

私は失敗している非常に単純なケースステートメントを書きました。構文を再確認しましたが、何が問題なのかを見つけることができませんでした。誰か教えてください。

#!/bin/bash

opt_type=0


function opt_type
{
        echo "Opt Porvisioning tool starting..."

        echo -e "1. ABC \n2. DEF \n3. HIJ \n"
        read opt_input

        case $opt_input in
        1|abc|ABC)
                opt_type=1;

        2|def|DEF)    
                opt_type=2;

        3|hij|HIJ)    
                opt_type=3;

        4|exit|Exit) echo "Exiting ..."

        *) echo "Please enter a valid entry. Exiting!!"

        esac
}

echo $opt_type


./opt_type.sh: line 16: syntax error near unexpected token `)'
./opt_type.sh: line 16: `       2|def|DEF)
-bash-3.2$ 

そのような記号 (`) が表示されないのに、なぜ不平を言っているのですか?

4

3 に答える 3

1

=);;ではなく、各ケースを閉じる必要があります。;

そう :

#!/bin/bash

opt_type=0


function opt_type
{
        echo "Opt Porvisioning tool starting..."

        echo -e "1. ABC \n2. DEF \n3. HIJ \n"
        read opt_input

        case $opt_input in
        1|abc|ABC)
                opt_type=1
        ;;
        2|def|DEF)    
                opt_type=2
        ;;
        3|hij|HIJ)    
                opt_type=3
        ;;
        4|exit|Exit) echo "Exiting ..."
        ;;
        *) echo "Please enter a valid entry. Exiting!!"
        ;;
        esac
}

echo $opt_type
于 2013-02-22T18:38:59.190 に答える
1

セミコロンを二重にする必要があります。

case $opt_input in
    1|abc|ABC)
        opt_type=1;;
    2|def|DEF)    
        opt_type=2;;
    3|hij|HIJ)    
        opt_type=3;;
    4|exit|Exit)
        echo "Exiting ...";;
    *)
        echo "Please enter a valid entry. Exiting!!";;
esac
于 2013-02-22T18:40:13.610 に答える
0

Bash では、case ステートメントの各ケースの後に 2 つのセミコロンが必要です。関数が呼び出されなかったので、関数から case ステートメントも削除しました。以下は期待どおりに動作します

#!/bin/bash
opt_type=0
echo "Opt Porvisioning tool starting..."
echo -e "1. ABC \n2. DEF \n3. HIJ \n"
read opt_input
case $opt_input in
    1|abc|ABC) opt_type=1;;
    2|def|DEF) opt_type=2;;
    3|hij|HIJ) opt_type=3;;
    4|exit|Exit) echo "Exiting ...";;
    *) echo "Please enter a valid entry. Exiting!!";;
esac
echo $opt_type
于 2013-02-22T18:42:27.830 に答える