まめぞうの技術メモ

IT関連で勉強したことをメモします

【超カンタン解説】対話型シェルの作り方(条件分岐、繰り返しも)

対話側のシェルを作る方法を解説します。超カンタンにできるので、おすすめですよ。やってみてくださいね。

今回は、寿司屋をモチーフにしたシェルを書きます。

寿司屋をモチーフに対話型シェルを作る
寿司屋をモチーフに対話型シェルを作る

readで変数に格納できます

対話型シェルで、ユーザーが打ち込んだ値を変数に格納するには、「read」コマンドを使います。サンプルを書きますね。

#!/bin/sh

echo "へい、いらっしゃい、何にしましょ?"
read menu

echo "あいよ~。"$menu"お待ち!"

sushi.sh というシェルで保存します。

カンタンなので、見て貰えばすぐ分かると思いますが、ユーザーが入れた値をそのまま返します。マグロを頼んだら、「マグロお待ち!」って言ってくれますよ。

マグロお待ち
マグロお待ち

もし、「./sushi.sh」を実行しようとして、「許可がありません」と言われた場合は、chmodコマンドで許可を与えてください。

訳が分からなければ、とりあえず、「chmod +x ./sushi.sh」としておけば大丈夫です。

if文で条件分岐を入れると楽しい

今度は、マグロのときだけ、「売り切れちゃったよ~」と言ってくれるスクリプトです。

#!/bin/sh

echo "へい、いらっしゃい、何にしましょ?"
read menu

if [ $menu = "マグロ" ]; then
    echo "わるいね~。"$menu"は売り切れちゃったよ。"
else
    echo "あいよ~。"$menu"お待ち!"
fi

こんな風に、マグロだと売り切れ、他のネタは「お待ち」って言ってくれます。

マグロは売り切れ
マグロは売り切れ

if文がポイントですね。

” [ ” の後ろと、” ] ”の前に、半角スペースが必要なので、注意してくださいね。

最後に、繰り返しで指定した数だけお寿司を握ってもらう

whileの繰り返しで、指定回数だけお寿司を握ってもらいましょう。

#!/bin/sh

echo "へい、いらっしゃい、何にしましょ?"
read menu

echo "何貫ですか?"
read can

count=0
while [ $count -lt $can ]
do
    echo "あいよ~。"$menu"お待ち!"
    let count++
done

動かしてみると、こんな感じ。

マグロお待ち!の繰り返し
マグロお待ち!の繰り返し

while文で繰り返しです。

入力した数になるまで繰り返しますよ。

-lt」は、不等号の「<」のことなので、$count が、 $can よりも小さい場合は、「~お待ち!」って言ってくれます。

まとめ

今回のコードでカンタンに、対話型シェルの作成と、条件分岐、繰り返しを使った応用を試してみれたと思います。

参考になれば幸いです。気になったら試してみてください。