声優の井上喜久子さんの17歳教(いくつになっても年齢は17歳基準で名乗る。17歳とXXX日みたいな感じで。)なるものがあるのだが、それを指定した誕生日から計算させるのをシェル芸でできそうだったのでやってみた。で、できたので一応備忘として残しておく。

実は今まで知らなかったのだが、dateコマンドでは以下のようにすることで、指定した日付+XX年後、みたいな指定ができるようだ(+XX年後とかは知ってたのだが、さらに日付を指定できるのは知らなかった)。

date -d 'YYYY/MM/DD 10 year ago'
blacknon@BS-PUB-UBUNTU-01:~$ date -d '2018/01/01 10 year ago'
2008年  1月  1日 火曜日 00:00:00 JST
blacknon@BS-PUB-UBUNTU-01:~$ date -d '2018/01/01 3 days'
2018年  1月  4日 木曜日 00:00:00 JST

これを利用して、以下のように記述することで、17歳とXX日という値を得ることができる。

echo 井上喜久子、17歳と$(echo "($(date +%s) - $(date -d "1964/09/25 17 year" "+%s"))/86400"|bc)日でーす
echo 1964/09/25|xargs -I@ bash -c 'echo 井上喜久子、17歳と$(echo "($(date +%s) - $(date -d "@ 17 year" "+%s"))/86400"|bc)日でーす'
blacknon@BS-PUB-UBUNTU-01:~$ date
2018年  1月 20日 土曜日 23:42:52 JST
blacknon@BS-PUB-UBUNTU-01:~$ echo 井上喜久子、17歳と$(echo "($(date +%s) - $(date -d "1964/09/25 17 year" "+%s"))/86400"|bc)日でーす
井上喜久子、17歳と13266日でーす
blacknon@BS-PUB-UBUNTU-01:~$ echo 1964/09/25|xargs -I@ bash -c 'echo 井上喜久子、17歳と$(echo "($(date +%s) - $(date -d "@ 17 year" "+%s"))/86400"|bc)日でーす'
井上喜久子、17歳と13266日でーす