shell脚本指定日期减去一天如何写

CS_DATE2=$[$CS_DATE1-1]CS_DATE1是指定日期,外部作为参数输入CS_DATE2是减去一天的日期但是这么写有一个问题,当日期为04月01日时,减... CS_DATE2=$[$CS_DATE1-1]
CS_DATE1是指定日期,外部作为参数输入

CS_DATE2是减去一天的日期
但是这么写有一个问题,当日期为04月01日时,减去1,结果为04月00日,该怎么做 才能变为03月31日,不通过判断语句来写
展开
 我来答
小米飞猫
推荐于2017-09-25 · 专注于IT监控领域技术
小米飞猫
采纳数:1653 获赞数:4811

向TA提问 私信TA
展开全部

如果只减去一天的话,直接写就可以了。

#date -d"yesterday 20150401" +%Y%m%d

如果要减去几天,还可以这样写,如果用负数是往前数,

#date -d"10 day ago 2015-04-01" +%Y-%m-%d
百度网友5311d79
2015-04-03 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3217万
展开全部
#!/bin/sh
get_day_before()
{
    sec=`date -d $1 +%s`
    sec_yesterday=$((sec - 86400))
    day_before=`date -d @$sec_yesterday +%F`
    echo $day_before
}
[ $# -ne 1 ] && exit 1
CS_DATE1=$1
get_day_before $CS_DATE1

先用 date 命令将指定日期转换成秒数,减去一天的秒数 86400,然后再转化成正常易读的日期格式,就可以了,不需要考虑复杂的大小月以及闰年问题。


$ ./test.sh 20150401

2015-03-31

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式