Bash 获取shell脚本中的上个月
现在,我正在使用以下代码行使用我的shell脚本将上个月作为两位数获取:Bash 获取shell脚本中的上个月,bash,date,date-arithmetic,Bash,Date,Date Arithmetic,现在,我正在使用以下代码行使用我的shell脚本将上个月作为两位数获取: lastMonth=$(date -d 'last month' +%m) 然而,我想知道如果我在一月份运行它,它会返回什么结果。我想在12月份得到12个,但我在1月份运行脚本时,很难测试它的行为。无论如何,我可以对此进行测试?您可以使用类似于三元结构的结构进行测试,因为您只需要管理一个您已经知道的特定案例(当lastMonth=01时) 首先,您需要测试在这种特殊情况下是否具有测试条件 [ $lastMonth -e
lastMonth=$(date -d 'last month' +%m)
然而,我想知道如果我在一月份运行它,它会返回什么结果。我想在12月份得到12个,但我在1月份运行脚本时,很难测试它的行为。无论如何,我可以对此进行测试?您可以使用类似于三元结构的结构进行测试,因为您只需要管理一个您已经知道的特定案例(当lastMonth=01时)
首先,您需要测试在这种特殊情况下是否具有测试条件
[ $lastMonth -eq "01" ] #return true if you're in January, else false
然后&&(和)和|(或)都是这样使用的
如果测试返回true:
[ true ] && lastMonth=12 || ((lastMonth--))
[ false ] && lastMonth=12 || ((lastMonth--))
lastMonth设置为12,但不递减,因为或条件需要其两部分的一个为真,以便管理,左侧部分返回真,因此不会评估其右侧部分
如果测试返回true:
[ true ] && lastMonth=12 || ((lastMonth--))
[ false ] && lastMonth=12 || ((lastMonth--))
和的右侧部分将不进行评估,这要归功于和直接执行或条件的右侧部分,因此在正常情况下上个月减小
这只是一种方法,比如if语句、数字操作等等。它将按照您的预期工作。祝你好运。你可以用
date-s
将当前日期设置为你想要的任何日期,然后测试它的行为。要查看某个特定日期的last month
,你可以使用打印12的date-d'2016-01-01 last month'+%m
,这似乎是一种没有好处的过度手段。我接受这个答案,但它超出了我的需要。谢谢:)