LoginSignup
3

More than 5 years have passed since last update.

羊の数を100まで数えるけど3の倍数のときだけ山羊になって5の倍数のときに吉田羊になって3の倍数かつ5の倍数のときは吉田山羊になるシェルスクリプト

Posted at

きっかけ

今月の特集「シェル30本ノック」が初心者向けにもすごくよかったです。
なぜか、羊の数を数えるというの問題に惹かれたので例題を追加してみました。

もとの問題は 羊の数を100匹数える という問題でした。

Software Design 2017年1月号|技術評論社

羊の数を100まで数えるけど3の倍数のときだけ山羊になる

if文を使って条件分岐させます。
はじめはfor文にネストされているだけでも戸惑うかもしれませんが、分解して読み解けば大丈夫。

羊もメェ〜?
いいえ、羊はベェ〜〜って感じなのです。

回答例

sheep_fizz.sh
#!/bin/bash

for i in `seq 1 100`; do
    if [ $(($i % 3)) == 0 ]; then
        echo "メェ〜"
    else
        echo "羊の数が $i 匹"
    fi
done

羊の数を100まで数えるけど3の倍数のときだけ山羊になって5の倍数のときに吉田羊になって3の倍数かつ5の倍数のときは吉田山羊になる

fizzbuzzですね。

bashのand条件を表す -a はすごくわかりにくいので嫌いです。
放牧日記は吉田羊さんのブログ。

回答例

sheep_fizzbuzz.sh
#!/bin/bash

for i in `seq 1 100`; do
    if [ $(($i % 3)) == 0 -a $(($i % 5)) == 0 ]; then
        echo "放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜"
    elif [ $(($i % 3)) == 0 ]; then
        echo "メェ〜"
    elif [ $(($i % 5)) == 0 ]; then
        echo "放牧日記( http://ameblo.jp/hitsuji1118/ )!"
    else
        echo "羊の数が $i 匹"
    fi
done
output
羊の数が 1 匹
羊の数が 2 匹
メェ〜
羊の数が 4 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 7 匹
羊の数が 8 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 11 匹
メェ〜
羊の数が 13 匹
羊の数が 14 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 16 匹
羊の数が 17 匹
メェ〜
羊の数が 19 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 22 匹
羊の数が 23 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 26 匹
メェ〜
羊の数が 28 匹
羊の数が 29 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 31 匹
羊の数が 32 匹
メェ〜
羊の数が 34 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 37 匹
羊の数が 38 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 41 匹
メェ〜
羊の数が 43 匹
羊の数が 44 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 46 匹
羊の数が 47 匹
メェ〜
羊の数が 49 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 52 匹
羊の数が 53 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 56 匹
メェ〜
羊の数が 58 匹
羊の数が 59 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 61 匹
羊の数が 62 匹
メェ〜
羊の数が 64 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 67 匹
羊の数が 68 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 71 匹
メェ〜
羊の数が 73 匹
羊の数が 74 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 76 匹
羊の数が 77 匹
メェ〜
羊の数が 79 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 82 匹
羊の数が 83 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!
羊の数が 86 匹
メェ〜
羊の数が 88 匹
羊の数が 89 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )だメェ〜
羊の数が 91 匹
羊の数が 92 匹
メェ〜
羊の数が 94 匹
放牧日記( http://ameblo.jp/hitsuji1118/ )!
メェ〜
羊の数が 97 匹
羊の数が 98 匹
メェ〜
放牧日記( http://ameblo.jp/hitsuji1118/ )!

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
3