3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

今日の月齢を絵文字で表示するシェルスクリプト

Last updated at Posted at 2020-07-02

Unicode絵文字が表示可能なフォントが設定されたターミナル上で実行すると、本日のおおよその月齢を計算して対応する絵文字を出力するシェルスクリプトです。

※2020-7-8 スクリプト修正
0で始まる数字が Bash により8進数とみなされるので、 month と date の頭に 10#を追加。

moonage.sh
# !/bin/bash

year=`date +%Y`
month=`date +%m`
date=`date +%d`

# 簡易月齢計算法第1表
array=(0 2 0 2 2 4 5 6 7 8 9 10)

# 西暦年数から11を引き、その値を19で割った余りを求め、11を掛ける。この値をaとする。
a=$((($year-11)%19*11))

# 月数から、表に従って値を求める。この値をbとする。
b=$((${array[$((10#$month-1))]}))

age=$((($a+$b+10#$date)%30))

if [ "$age" = 0 ] || [ "$age" = 29 ]; then
    echo -n "🌑新月"
elif [ "$age" -ge 1 ] && [ "$age" -le 6 ]; then
    echo -n "🌒三日月"
elif [ "$age" -ge 7 ] && [ "$age" -le 9 ]; then
    echo -n "🌓上弦の月"
elif [ "$age" -ge 10 ] && [ "$age" -le 13 ]; then
    echo -n "🌔十三夜月"
elif [ "$age" -ge 14 ] && [ "$age" -le 15 ]; then
    echo -n "🌕満月"
elif [ "$age" -ge 16 ] && [ "$age" -le 20 ]; then
    echo -n "🌖寝待月"
elif [ "$age" -ge 21 ] && [ "$age" -le 24 ]; then
    echo -n "🌗下弦の月"
elif [ "$age" -ge 25 ] && [ "$age" -le 28 ]; then
    echo -n "🌘二十六夜月"
fi
echo "(月齢:"$age")"

実行結果

~% chmod +x moonage.sh
~% date
2020年  7月  2日 木曜日 14:47:54 JST
~% ./moonage.sh
🌔十三夜月(月齢:11)

参考にしたサイト
月齢 - Wikipedia
月齢計算
Googleカレンダーに月齢を表示する

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?