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カレンダーに月齢を表示する