ケース説明ヘルプ

ケース説明ヘルプ

私はUnixに初めてアクセスし、このケースの説明に助けが必要です。私が望むのは、ユーザーがCaseステートメントを使用して変数を選択できるようにし、システムにユーザー選択の結果を読み取ることです。私のスクリプト構造は次のとおりです(例:)。

CHOOSEfruit () {
clear
echo "Choose fruit you need to buy (a.Apple b.Banana c.Pear d.Pineapple)"
read FRUIT
case $FRUIT in
    a|A)
    echo "Apple"
    ;;
    b|B)
    echo "Banana"
    ;;
    c|C)
    echo "Pear"
    ;;
    d|D)
    echo "Pineapple"
    ;;
esac
clear
echo "The fruit you need to buy is $FRUIT"
echo ""
read -p "Press [Enter] key to go back to main menu"
clear
}

「a」を選択すると、スクリプトから「The Fruit you need to buy is apples」を出力したいと思います。

ベストアンサー1

この問題は屋根ふきによってよりよく解決されますselect

PS3='Please select fruit from the menu: '

select fruit in 'No fruit please' Apple Banana Pear Pineapple; do
    case $REPLY in
        1)
            # User wants no fruit
            unset fruit
            break
            ;;
        [2-5])
            # All ok, exit loop
            break
            ;;
        *)
            # Invalid choice
            echo 'Try again' >&2
    esac
done

if [ -n "$fruit" ]; then
    printf 'The fruit you need is %s\n' "$fruit"
else
    echo 'You selected no fruit!'
fi

このselectループは、ユーザーに対話型メニューのオプションのリストを提供します。ユーザーにメニューから項目を選択するように求める文字列です$PS3

ループ本体内のselectin値は、$fruitユーザーが選択した実際のテキスト文字列ですが、$REPLYユーザーがプロンプトに入力するすべての値になります。

case ... esacループ内ではステートメントを使用する必要はありません。ここでは任意のコードを使用できます。たとえば、次のようにするとより快適になりますif ... then ... elif ... else ... fi

if [ "$REPLY" = 1 ]; then
    unset fruit
    break
elif [[ $REPLY == [2-5] ]]; then
    break
else
    echo 'Try again' >&2
fi

他の無限ループと同様に、selectExit Loopを使用します。break

このコードを3回実行してください。

$ bash script
1) No fruit please
2) Apple
3) Banana
4) Pear
5) Pineapple
Please select fruit from the menu: 1
You selected no fruit!
$ bash script
1) No fruit please
2) Apple
3) Banana
4) Pear
5) Pineapple
Please select fruit from the menu: 2
The fruit you need is Apple
$ bash script
1) No fruit please
2) Apple
3) Banana
4) Pear
5) Pineapple
Please select fruit from the menu: 6
Try again
Please select fruit from the menu: 3
The fruit you need is Banana

おすすめ記事