在shell脚本中获取上个月

时间:2016-10-03 16:09:45

标签: bash date date-arithmetic

现在,我正在使用以下代码行来使用我的shell脚本将上个月作为两位数字来表示:

lastMonth=$(date -d 'last month' +%m)

然而,我想知道如果我在一月份运行它将会返回什么。我想在12月回来12,但是我很难在1月份运行脚本时测试它的表现。无论如何,我可以测试一下吗?

1 个答案:

答案 0 :(得分:2)

您可以使用三元类似的结构来执行此操作,因为您只需要管理一个您已经知道的特定情况(当lastMonth = 01时)

lastMonth=$(date +%m)
[ $lastMonth -eq "01" ] && lastMonth=12 || ((lastMonth--))

首先,您需要使用测试条件

测试您是否处于此特殊情况
[ $lastMonth -eq "01" ] #return true if you're in January, else false

然后control operators && AND )和 || OR >)像这样使用

如果测试返回true:

[ true ] && lastMonth=12 || ((lastMonth--))

lastMonth设置为12但未递减,因为 OR 条件需要一个他的两个部分对于manage为真,左边部分返回true所以它不会评估他的正确部分

如果测试返回true:

[ false ] && lastMonth=12 || ((lastMonth--))

AND 的右侧部分将不会被lazy evaluation评估并直接执行 OR 条件的右侧部分,因此在正常情况下会减少lastMonth

这只是一种方法,比如if语句,数字操作等等。