我是shell脚本的新手.. 我想要一个脚本来获取用户输入的任何日期和3天的打印日期?
例如: 如果用户输入日期为2013-01-01 那么输出应该是
2012年12月29日
答案 0 :(得分:3)
如果你有GNU日期,那么这将有效:
user_date=2013-01-01
date +%Y-%m-%d -d "$user_date - 3 days"
有了BSD日期,你必须这样做:
user_date=2013-01-01
date -j -v -3d +%Y-%m-%d -d "${user_date//-}0000"
因为BSD日期需要的日期格式为YYYYmmddHHMM
。
我现在没有Solaris在那里进行测试。如果您在Solaris中,那么希望有gdate
,您可以使用第一个选项,只需将date
命令替换为gdate
。
无论您使用哪种操作系统,都有两个要点:
date
命令。我测试过GNU日期可以接受YYYY-mm-dd
格式(可能还有很多其他格式),而BSD需要YYYYmmddHHMM
。DATE - 3 days
即可,使用BSD日期时,使用-j -v -3d
标记会更加棘手。 man date
应该可以帮助您克服这些障碍。在最糟糕的情况下,您可以在date
或类似内容中执行所需的所有perl
操作。
答案 1 :(得分:1)
你可以这样做:
date --date="3 days ago"
获得3天的回复日期。