シェルスクリプト総合 その6
■ このスレッドは過去ログ倉庫に格納されています
0408407
2006/05/14(日) 15:03:08bash厨は$(())に置き換えたいだろうが、自分のマシンで勝手にやってくれ。
to_mjd() {
if [ "$2" -lt 3 ]; then
yy=`expr "$1" - 1`; mm=`expr "$2" + 12`; dd=$3
else
yy="$1"; mm="$2"; dd=$3
fi
expr $yy \* 1461 / 4 + $yy / 400 - $yy / 100 + \( 3059 \* $mm - 6118 \) / 100 + $dd - 678912
}
dayofweek() {
# Sun=0, Mon=1, Tue=2, Wed=3, Thu=4, Fri=5, Sat=6
expr \( "$1" + 3 \) % 7
}
from_mjd() {
yy=`expr \( $mjd \* 100 - 1507820 \) / 36525`
m2=`expr $yy \* 1461 / 4`
mm=`expr \( \( $mjd - $m2 \) \* 10000 - 149561000 \) / 306001`
d2=`expr $mm \* 306001 / 10000`
dd=`expr $mjd - 14956 - $m2 - $d2`
if [ $mm -gt 13 ]; then
yy=`expr $yy + 1901`; mm=`expr $mm - 13`
else
yy=`expr $yy + 1900`; mm=`expr $mm - 1`
fi
echo "$yy $mm $dd"
}
mjd=`to_mjd 2004 1 1`
echo "mjd: $mjd"# => 53005
echo "dayofweek: `dayofweek $mjd`"# => 4 (Thu)
echo "gregorian: `from_mjd $mjd`"# => 2004 1 1
■ このスレッドは過去ログ倉庫に格納されています