0

これがスクリプトで、予期しない fi エラーが発生し続けます。私は何が欠けていますか?.. (if 文に [] を使い始めましたが、このコマンドを使用しているので [] を削除しました .. このままでよろしいですか?)

if type "java" 2>&1;
    then
        echo "All ok . . . ";
        exit                                                                                                                                              
    else
        read -n1 -r -p "Yo need to install"
        while true; do
            echo "Want to install??"
            select yn in "y" "n"; do
                case $yn in
                    y ) echo "Installing here..."; break;;
                    n ) echo "Ok... stopping..."; exit;;
                esac
            done
        exit
fi

ありがとう!

4

2 に答える 2

3

whiledoneではなく、で終わりexitます。これを試して:

if type "java" 2>&1;
    then
        echo "All ok . . . ";
        exit                                                                                                                                              
    else
        read -n1 -r -p "Yo need to install"
        while true; do
            echo "Want to install??"
            select yn in "y" "n"; do
                case $yn in
                    y ) echo "Installing here..."; break;;
                    n ) echo "Ok... stopping..."; exit;;
                esac # <-- ending `case`
            done     # <-- ending `select`
        done         # <-- while ends with `done`, not `exit`!
fi                   # <-- ending `if`
于 2013-07-06T00:13:53.660 に答える
1

最後の;のexit前に があります。fi私はそれがであるべきだと思いますdone

于 2013-07-06T00:14:08.930 に答える