"艾莉芙"出乎意料。对于日期函数



这是我的代码

CURR_MNTH=$(date +'%m' -d 'now')
if [$CURR_MNTH < 04]
    THIS_QTR=1
elif [$CURR_MNTH < 07] && [$CURR_MNTH > 03]
    THIS_QTR=2
elif [$CURR_MNTH < 10] && [$CURR_MNTH > 07]
    THIS_QTR=3
elif [$CURR_MNTH > 09]
    THIS_QTR=4
fi
echo $THIS_QTR

我试图用上述逻辑获得当前季度,但提示说我有' elif'意外错误…谁能帮帮我?

如果您使用Bash,则会出现许多错误:

  • if语句后面没有分号;
  • 括号和条件表达式之间没有空格;
  • 连词应在同一括号内;
  • 考虑使用-lt-gt进行值测试。
正确的代码应该是这样的:
CURR_MNTH=$(date +'%m' -d 'now')
if [[ $CURR_MNTH -lt 4 ]]; then
    THIS_QTR=1
elif [[ $CURR_MNTH -lt 7 && $CURR_MNTH -gt 3 ]]; then
    THIS_QTR=2
elif [[ $CURR_MNTH -lt 10 && $CURR_MNTH -gt 7 ]]; then
    THIS_QTR=3
elif [[ $CURR_MNTH -gt 9 ]]; then
    THIS_QTR=4
fi
echo $THIS_QTR

考虑下次在代码中运行http://www.shellcheck.net/

您可以通过公式从月份得到季度:

THIS_QTR=$(( 1 + (10#$CURR_MNTH - 1) / 3))

10#前缀表示十进制数,防止前导0被解释为八进制数指示符。

最新更新