誕生日から年齢計算するシェルスクリプト。
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`
は、同じ。
面白いスクリプトありがとうございます。(検索して来る方も来る方だけどw)
ReplyDelete蛇足としては
最後のecho分の始まりのシングルクォートが違っています。
ひみつのあっこ 様、
ReplyDeleteコメントを残してくださり、ありがとうございます。
私は、「素人の下手の横好き」で、シェルスクリプトをかじっている者です。
何年か前に、なんとか、このスクリプトが動いてくれた時に、とても嬉しかったことを覚えています。
「ご指摘」も感謝します!