d2hellen 发表于 2013-1-31 00:50:32

[转]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 successdate_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`fiecho $y_year$m_month$m_day
页: [1]
查看完整版本: [转]shell中按格式显示日期