[转]shell中按格式显示日期

在shell编程中,将日期按照指定格式输出是常见的任务。我们看一下一个最常见的例子:
now=`date "+%Y%m%d%H%M%S%N"`

对于初学者来讲,要注意几点:
1).如果不指定格式,直接将date的结果赋给now,那么格式为now=`date`,一定要注意date上面的两个符号,为键盘上面1左边的那个符号;
2).date后面“+“前面要加空格,date和格式字符串之间要加空格分开;
3).后面的格式字符串就不用多讲了,区别的是%Y表示为2009,则%y表示为09,其它的就不用说了。
4).字符串的连接中间不用符号,写在一起即可。

5).如果一个字符串中间包含变量,则字符串应该用双引号引起来,而不是单引号。如"abc${now}def".这个样子。

6).shell的赋值等号左右是没有空格的,是紧凑格式。



yy=`date +%Y`
mm=`date +%m-1|bc`
dd=`date +%d`
[ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`
aaa=`cal $mm $yy`
dd=`echo $aaa|awk '{print $NF}'`
echo $yy$mm$dd 




显示昨天的日期:

y_year=`date +%Y`
m_month=`date +%m`
m_day=`date +%d`
#y_year=2005
#m_month=08
#m_day=01
#The date test sucess so as:
#y_year=2005;m_month=03;m_day=01 y_year=2005;m_month=01;m_day=01 y_year=2005;m_month=08;m_day=01
#######mine shell#####################
############bash redhat as 3 test success
date_cal=`cal $m_month $y_year`
if [ $m_day -le 1 ];then
       m_month2=`expr $m_month-1|bc`
       if [ $m_month2 -le 0 ];then
            m_month=12
            y_year=`expr $y_year-1|bc`
            date_cal=`cal $m_month $y_year`
       else
            date_cal=`cal $m_month2 $y_year`
            m_month=$m_month2
       fi
       m_day=`echo $date_cal |awk '{print $NF}'`
else
       m_day=`expr $m_day-1|bc`
fi
echo $y_year$m_month$m_day

猜你喜欢

转载自lan-hai.iteye.com/blog/1496403
今日推荐