トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

前日日付Shell

前日日付取得ShellScript

今回は前日日付の求め方のShellScript篇です。
自作ではなく我が社の元常務取締役が現役時代に作成したスクリプトです。閏年対応だとか・・・。Perlが使えないときなどに役立ちそうなのでメモっておきます。

#!/bin/sh
# Environment
hostname=`hostname`
year=`date +%Y`
month=`date +%m`
day=`date +%d`
# Get Date
case ${month} in
01)
if [ ${day} = 01 ]
then
year=`expr ${year} - 1`
month=12
day=31
else
month=12
day=`expr ${day} - 1`
fi
;;
03)
if [ ${day} = 01 ]
then
w=0
if [ `expr ${year} % 4` = 0 ]
then
w=1
if [ `expr ${year} % 100` = 0 ]
then
w=0
if [ `expr ${year} % 400` = 0 ]
then
w=1
else
w=0
fi
else
w=1
fi
else
w=0
fi
if [ $w = 0 ]
then
month=02
day=28
else
month=02
day=29
fi
else
day=`expr ${day} - 1`
fi
;;
05|07|10|12)
if [ ${day} = 01 ]
then
month=`expr ${month} - 1`
day=30
else
day=`expr ${day} - 1`
fi
;;
*)
if [ ${day} = 01 ]
then
month=`expr ${month} - 1`
day=31
else
day=`expr ${day} - 1`
fi
;;
esac
yy=${year}
mm=${month}
dd=${day}
if [ ${mm} -lt 10 ]
then
mm="0${mm}"
else
mm=${mm}
fi
if [ ${dd} -lt 10 ]
then
dd="0${dd}"
else
dd=${dd}
fi