お金プログラム ~だれでもノマド~

ノマド的な稼ぎ方、投資、IT系(プログラミング)に関するブログです。

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

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

 

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

f:id:toyo--104:20180611235720p:plain

readで変数に格納できます

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

 

#!/bin/sh

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

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

 

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

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

 

f:id:toyo--104:20180611234257p:plain

 

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

 

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

 

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

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

#!/bin/sh

 

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

 

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

 

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

f:id:toyo--104:20180611235359p:plain

if文がポイントですね。

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

 

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

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

 

#!/bin/sh

 

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

 

echo "何貫ですか?"
read can

 

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

 

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

f:id:toyo--104:20180612000742p:plain

while文で繰り返しです。

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

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

 

まとめ

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

 

参考になれば幸いです。みんなもやってみてね!