在 shell 脚本中获取上个月
Getting previous month in shell script
现在,我正在使用以下代码行来使用我的 shell 脚本将上个月作为两位数获取:
lastMonth=$(date -d 'last month' +%m)
但是,我想知道如果我 运行 一月份会 return 什么。我想在 12 月恢复 12,但我很难测试当我在 1 月 运行 脚本时它的行为方式。不管怎样,我可以测试一下吗?
您可以使用类似 三元 的结构来执行此操作,因为您只需要管理一个您已经知道的特定情况(当 lastMonth = 01 时)
lastMonth=$(date +%m)
[ $lastMonth -eq "01" ] && lastMonth=12 || ((lastMonth--))
首先,您需要使用 test-condition
测试您是否处于这种特殊情况
[ $lastMonth -eq "01" ] #return true if you're in January, else false
然后 control operators && (AND) 和 || (OR) 是这样使用的
如果测试return为真:
[ true ] && lastMonth=12 || ((lastMonth--))
lastMonth 设置为 12 但没有递减,因为 OR 条件需要他的两个部分的 one 为真才能管理,左part return true 所以它不会评估他的正确部分
如果测试return为真:
[ false ] && lastMonth=12 || ((lastMonth--))
由于lazy evaluation,AND的右边部分将不会被计算,直接执行OR的右边部分条件,所以在正常情况下减少 lastMonth
这只是一种实现方式,例如 if 语句、数值操作等。
现在,我正在使用以下代码行来使用我的 shell 脚本将上个月作为两位数获取:
lastMonth=$(date -d 'last month' +%m)
但是,我想知道如果我 运行 一月份会 return 什么。我想在 12 月恢复 12,但我很难测试当我在 1 月 运行 脚本时它的行为方式。不管怎样,我可以测试一下吗?
您可以使用类似 三元 的结构来执行此操作,因为您只需要管理一个您已经知道的特定情况(当 lastMonth = 01 时)
lastMonth=$(date +%m)
[ $lastMonth -eq "01" ] && lastMonth=12 || ((lastMonth--))
首先,您需要使用 test-condition
测试您是否处于这种特殊情况[ $lastMonth -eq "01" ] #return true if you're in January, else false
然后 control operators && (AND) 和 || (OR) 是这样使用的
如果测试return为真:
[ true ] && lastMonth=12 || ((lastMonth--))
lastMonth 设置为 12 但没有递减,因为 OR 条件需要他的两个部分的 one 为真才能管理,左part return true 所以它不会评估他的正确部分
如果测试return为真:
[ false ] && lastMonth=12 || ((lastMonth--))
由于lazy evaluation,AND的右边部分将不会被计算,直接执行OR的右边部分条件,所以在正常情况下减少 lastMonth
这只是一种实现方式,例如 if 语句、数值操作等。