shell中按格式显示日期(转)

from: http://hi.baidu.com/wang_lizheng/blog/item/2f1b15cf144bcf34f8dc61d8.html

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值