LoginSignup
10
4

More than 3 years have passed since last update.

Shell scriptで湯婆婆を実装してみた

Posted at

はじめに

原作:Javaで湯婆婆を実装してみる

世の中では湯婆婆プログラムが大流行中らしい。
このビックウェーブに乗るっきゃないということで
初めてQiitaを書いてみました。

実際のコード

yubaba
set -eu #エラー時に停止するように

echo "契約書だよ。そこに名前を書きな。"
read name
echo "フン。${name}というのかい。贅沢な名だねぇ。"

random=$[RANDOM % ${#name}]
newName=${name:random:1}

echo "今からお前の名前は${newName}だ。いいかい、${newName}だよ。分かったら返事をするんだ、${newName}!!"

実行例

$ bash yubaba
> 契約書だよ。そこに名前を書きな。
> 山田太郎
> フン。山田太郎というのかい。贅沢な名だねぇ。
> 今からお前の名前は郎だ。いいかい、郎だよ。分かったら返事をするんだ、郎!!

コマンド化

ちなみに、下記のようにPATHが通ったところに置き、権限を渡せば
いつでもどこでも湯婆婆を召喚できます。
(/usr/local/bin/に置くのはあんまりいい気持ちはしませんが・・・

$ chmod a+x yubaba #権限を付与
$ cp yubaba /usr/local/bin/ #PATHが通った場所へコピー
$ yubaba
> 契約書だよ。そこに名前を書きな。
> 山田太郎
> フン。山田太郎というのかい。贅沢な名だねぇ。
> 今からお前の名前は太だ。いいかい、太だよ。分かったら返事をするんだ、太!!

クラッシュ

何も入力しないと、しっかりエラーを吐いて停止します(原作リスペクト大事
Shell scriptはデフォルトだとエラーを吐いた後も実行されてしまうので、
最初にset -euを指定しています。

$ bash yubaba
> 契約書だよ。そこに名前を書きな。
> 
> フン。というのかい。贅沢な名だねぇ。
> yubaba: line 7: RANDOM % 0: division by 0 (error token is "0")
> yubaba: line 8: random: unbound variable

終わりに

初Qiita投稿でしたが如何だったでしょうか。

一応、Shell scriptで書かれたものが無いか確認しましたが
もし私が気づかず、丸被りしてしまってたらごめんなさい。

私としてはShell scriptも触れられて、記事にも挑戦できて良い経験になりました。
みなさんも湯婆婆・Shell scriptを楽しんでみてください!w

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4