shellscriptのselect文を勉強したので、まとめます。
書式
select_ex.sh
select 変数名 in 値...
do
処理...
done
*終了するときはbreakを入れるか、Ctrl+D(EOF送信)を使う。
実行されるとユーザから値
に応じた数値の入力を受け付ける。
1)値1
2)値2
...
ここで入力された数値が変数に格納される。
例
select.sh
select var in a b c d exit
do
if [ $var = 'exit' ];
then
break
fi
echo $var
done
#入力受付
# 1) a
# 2) b
# 3) c
# 4) d
# 5) exit
実行すると入力を受け付けて、5(exit)ならばbreakそれ以外ならば変数の値を表示。
ただ、1~5以外、空白を入力されるとエラーが出る。
そのため、if文のzオプションを使う。
select.sh
select var in a b c d exit
do
if [ -z $var ];
then
echo 'this is unavailable'
else
if [ $var = 'exit' ];
then
break
fi
echo $var
fi
done
これで1~5以外の数値の場合、unavailableと表示する。
select文では1~5以外、つまり選択肢にない値が入力された場合は変数にはnullを格納している。
間違えがありましたらご指摘ください。