如何在shell脚本中作为用户输入的日期?

时间:2014-01-05 16:27:11

标签: shell unix scripting

我是shell脚本的新手.. 我想要一个脚本来获取用户输入的任何日期和3天的打印日期?

例如: 如果用户输入日期为2013-01-01 那么输出应该是

2012年12月29日

2 个答案:

答案 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

无论您使用哪种操作系统,都有两个要点:

  1. 您可以使用何种格式将日期传递给date命令。我测试过GNU日期可以接受YYYY-mm-dd格式(可能还有很多其他格式),而BSD需要YYYYmmddHHMM
  2. 您可以采用何种格式寻求差异。使用GNU日期只需DATE - 3 days即可,使用BSD日期时,使用-j -v -3d标记会更加棘手。
  3. 系统的

    man date应该可以帮助您克服这些障碍。在最糟糕的情况下,您可以在date或类似内容中执行所需的所有perl操作。

答案 1 :(得分:1)

你可以这样做:

date --date="3 days ago"

获得3天的回复日期。