现在,我正在使用以下代码行来使用我的shell脚本将上个月作为两位数字来表示:
lastMonth=$(date -d 'last month' +%m)
然而,我想知道如果我在一月份运行它将会返回什么。我想在12月回来12,但是我很难在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语句,数字操作等等。