#!/usr/bin/sh #set -x ago_day() { str=$1 days=$2 yy=`echo $str|cut -c 1-4` mm=`echo $str|cut -c 5-6` dd=`echo $str|cut -c 7-8` sav_dd=$days days=`expr $days - $dd` while [ $days -ge 0 ] do mm=`expr $mm - 1` [ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1` aaa=`cal $mm $yy` bbb=`echo $aaa|awk '{print $NF}'` days=`expr $days - $bbb` done dd=`expr 0 - $days` expr $dd : "^.$" > /dev/null && dd=0$dd expr $mm : "^.$" > /dev/null && mm=0$mm echo $yy$mm$dd } Change_time=${1:-120} #120分钟即2小时之前 V_Day=`date +%Y%m%d` V_Hour=`date +%H` V_Min=`date +%M` V_Time=`expr $V_Hour \* 60 + $V_Min ` if [ $V_Time -lt $Change_time ]; then Day=`expr $Change_time / 1440 ` V_Day=`ago_day $V_Day $Day` while [ $V_Time -le $Change_time ] do V_Time=`expr 1440 + $V_Time` done fi V_Time=`expr $V_Time - $Change_time ` N_Hour=`expr $V_Time / 60 ` N_Hour=`printf "%02d\n" $N_Hour` N_Min=`expr $V_Time % 60 ` N_Min=`printf "%02d\n" $N_Min` echo "the $Change_time minute ago is $V_Day $N_Hour ![]() |
原帖由 doctorjxd 于 2007-9-5 15:16 发表
这个问题已经被问过多次,实在没有必要写这么复杂的脚本来实现。
在FreeBSD下可以这样实现
#!/bin/sh
Change_time=${1:-120}
date -j -f %s $(($(date "+%s")-$Change_time*60)) "+the $Change_time mi ...
原帖由 ly5066113 于 2007-9-5 11:19 发表
$ cat test.sh
#!/bin/sh
#set -x
Change_time=${1:-120} #默认120分钟即2小时之前
V_Day=`date +%m%d`
V_Hour=`date +%H`
V_Min=`date +%M`
V_Time=`expr $V_Hour \* 60 + $V_Min `
if [ $V_Time -lt ...
#!/usr/bin/sh #set -x ago_day() { str=$1 days=$2 yy=`echo $str|cut -c 1-4` mm=`echo $str|cut -c 5-6` dd=`echo $str|cut -c 7-8` sav_dd=$days days=`expr $days - $dd` while [ $days -ge 0 ] do mm=`expr $mm - 1` [ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1` aaa=`cal $mm $yy` bbb=`echo $aaa|awk '{print $NF}'` days=`expr $days - $bbb` done dd=`expr 0 - $days` expr $dd : "^.$" > /dev/null && dd=0$dd expr $mm : "^.$" > /dev/null && mm=0$mm echo $yy$mm$dd } Change_time=${1:-120} #120分钟即2小时之前 V_Day=`date +%Y%m%d` V_Hour=`date +%H` V_Min=`date +%M` V_Time=`expr $V_Hour \* 60 + $V_Min ` if [ $V_Time -lt $Change_time ]; then Day=`expr $Change_time / 1440 ` V_Day=`ago_day $V_Day $Day` while [ $V_Time -le $Change_time ] do V_Time=`expr 1440 + $V_Time` done fi V_Time=`expr $V_Time - $Change_time ` N_Hour=`expr $V_Time / 60 ` N_Hour=`printf "%02d\n" $N_Hour` N_Min=`expr $V_Time % 60 ` N_Min=`printf "%02d\n" $N_Min` echo "the $Change_time minute ago is $V_Day $N_Hour ![]() |
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |