Unix-select-loop
提供:Dev Guides
Unix/Linux Shell-選択ループ
*select* ループを使用すると、ユーザーがオプションを選択できる番号付きメニューを簡単に作成できます。 ユーザーに選択肢のリストから1つ以上のアイテムを選択するように依頼する必要がある場合に役立ちます。
構文
select var in word1 word2 ... wordN
do
Statement(s) to be executed for every word.
done
ここで、_var_は変数の名前で、 word1 から wordN はスペース(単語)で区切られた文字のシーケンスです。 for ループが実行されるたびに、変数varの値は、単語リストの次の単語 word1 〜 wordN に設定されます。
選択ごとに、一連のコマンドがループ内で実行されます。 このループは ksh で導入され、bashに適応されました。 sh では使用できません。
例
ユーザーが好みの飲み物を選択できるようにする簡単な例を次に示します-
#!/bin/ksh
select DRINK in tea cofee water juice appe all none
do
case $DRINK in
tea|cofee|water|all)
echo "Go to canteen"
;;
juice|appe)
echo "Available at home"
;;
none)
break
;;
*) echo "ERROR: Invalid selection"
;;
esac
done
選択ループによって提示されるメニューは次のように見えます-
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
#? juice
Available at home
#? none
$
次のように変数PS3を変更することにより、選択ループによって表示されるプロンプトを変更できます-
$PS3 = "Please make a selection => " ; export PS3
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
Please make a selection => juice
Available at home
Please make a selection => none
$