这是我的代码

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进行值(value)测试。

  • 正确的代码如下所示:
    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/

    关于linux - `elif'意外..用于Date函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30440119/

    10-14 08:39