Friday, June 3, 2016

age_calc, 誕生日から年齢計算するシェルスクリプト

誕生日から年齢計算するシェルスクリプト。

age_calc と名付けました。

#!/bin/bash

# 実行時に指定された引数の数、つまり変数 $# の値が 1 でなければエラー終了。
if [ $# -ne 1 ]; then
    echo "指定された引数は$#個です。" 1>&2
   echo "実行するには2個の引数が必要です。" 1>&2
   exit 1
fi

# 引き数として与えられた「誕生日」が8桁の整数である場合にだけ、年齢計算を行う。
if [[ $1 =~ [0-9]{8} ]];
then
   now=`date +%Y%m%d`
   my_birthday=$1

   echo $(((now-my_birthday)/10000))    # 二重括弧で計算する場合は、変数に$をつけない。
   #echo `expr \( ${now} - ${my_birthday} \) / 10000`    # exprで計算する場合は、+,-などの演算記号の前後にスペースを入れる。
else
echo ‘誕生日は「19730531」という形式で入力してください。'
fi

 

ちなみに、

echo $(((now-my_birthday)/10000))

と、

echo `expr \( ${now} - ${my_birthday} \) / 10000`

は、同じ。

2 comments:

  1. 面白いスクリプトありがとうございます。(検索して来る方も来る方だけどw)
    蛇足としては
    最後のecho分の始まりのシングルクォートが違っています。

    ReplyDelete
  2. ひみつのあっこ 様、
    コメントを残してくださり、ありがとうございます。

    私は、「素人の下手の横好き」で、シェルスクリプトをかじっている者です。
    何年か前に、なんとか、このスクリプトが動いてくれた時に、とても嬉しかったことを覚えています。

    「ご指摘」も感謝します!

    ReplyDelete