対話型のシェルを作成することがよくあるので、備忘も兼ねて作成方法を簡単に記載します。
対話型のシェル
ユーザーからなんらかのインプットを受けてそのインプットをもとにシェルで処理を行い、結果を出力したりする。
今回は血液型を入力すると、どのような性格かを出力するシェルを参考に解説します。
blood_type.sh
#!/bin/sh
echo "あなたの血液型を入力してください。"
read -p '[A/B/O/AB]' bloodtype
echo -e "\n${bloodtype}型でよろしければyesと入力してください。"
read -p '[yes]' agree
if [ $agree != "yes" ]; then
exit 1
fi
echo ""
case "$bloodtype" in
a | A) echo "A型の人は几帳面です";;
b | B) echo "B型の人は好奇心旺盛です";;
o | O) echo "O型の人は穏やかな性格です";;
ab | AB) echo "AB型の人は感受性が豊かです";;
*) echo "正しく読み取れませんでした。";;
esac
1.ユーザーからの入力を変数に格納する
readコマンドを使ってユーザーからの入力を変数(bloodtype,agree)に格納します。
-pオプションで入力する前に表示する文字列([A/B/O/AB],[yes])を指定できます。
echo "あなたの血液型を入力してください。"
read -p '[A/B/O/AB]' bloodtype
echo -e "\n${bloodtype}型でよろしければyesと入力してください。"
read -p '[yes]' agree
2.if文で条件分岐
if分で条件(agreeがyesではない)に一致する時、exit 1でシェルを終了します。
if [ $agree != "yes" ]; then
exit 1
fi
3.case文で条件分岐
大文字小文字どちらでも対応できるような条件で、それぞれのケースに一致した場合の処理を記載します。
echo ""
case "$bloodtype" in
a | A) echo "A型の人は几帳面です";;
b | B) echo "B型の人は好奇心旺盛です";;
o | O) echo "O型の人は穏やかな性格です";;
ab | AB) echo "AB型の人は感受性が豊かです";;
*) echo "正しく読み取れませんでした。";;
esac
以上、シェルで何か作りたい時の参考にしてください。