对于Date函数,“elif”意外

这是我的代码

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被解释为八进制数字指示符。