対話側のシェルを作る方法を解説します。超カンタンにできるので、おすすめですよ。やってみてくださいね。
今回は、寿司屋をモチーフにしたシェルを書きます。
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 よりも小さい場合は、「~お待ち!」って言ってくれます。
まとめ
今回のコードでカンタンに、対話型シェルの作成と、条件分岐、繰り返しを使った応用を試してみれたと思います。
参考になれば幸いです。気になったら試してみてください。