另一个意外的标记`fi'错误

时间:2015-02-13 16:59:50

标签: bash debian

我正在尝试针对特定条件测试7天,并且需要考虑闰年。我认为我有正确的逻辑,已经完成了100次。但由于某些原因,我不断收到同样的错误。

:~$ bin/shabbat/test
bin/shabbat/test: line 90: syntax error near unexpected token `fi'
bin/shabbat/test: line 90: `  fi'

请不要笑到难。我不是程序员。我必须复制/粘贴有效的代码,并尝试让它做我想做的事。

#!/bin/bash

STORDIR="${HOME}/bin/shabbat/data"
DAY=28
MONTH=1
YEAR=2016

# Calculate next day accounting for leap years
function Next_Day
{
    case ${ $MONTH } in
        1) 
        FULL="31"
        ;;
        2)
        FULL="28"
        ;;
        3)
        FULL="31"
        ;;
        4) 
        FULL="30"
        ;;
        5)
        FULL="31"
        ;;
        6)
        FULL="30"
        ;;
        7) 
        FULL="31"
        ;;
        8)
        FULL="31"
        ;;
        9)
        FULL="30"
        ;;
        10) 
        FULL="31"
        ;;
        11)
        FULL="30"
        ;;
        12)
        FULL="31"
        ;;
esac

if [[ "$DAY" -le "27" ]]; then
    (( DAY++ ))
    exit

elif [[ ${MONTH} == "2" ]]; then
    rem1=$((YEAR%4))
    rem2=$((YEAR%100))
    rem3=$((YEAR%400))

    if [ ${rem3} = "0" ]; then
        $FULL="29"
        exit
    fi

    if [ ${rem2} = "0" -a ${rem3} != "0" ]; then
      # echo "$YEAR Is Not A Leap Year"
        exit
    fi

    if [ ${rem1} = "0" -a ${rem2} != "0" ]; then
      # echo "$YEAR Is A Leap Year"
        $FULL="29"
    else
      # echo "$YEAR Is Not A Leap Year"
        exit
    fi

    if [ ${DAY} = ${FULL} -a ${MONTH} -lt "12" ]; then
        (( MONTH++ ))
        (( DAY++ ))
        exit
    fi

elif [ ${DAY} = ${FULL} -a ${MONTH} = "12" ]; then
    (( YEAR++ ))
    let MONTH=1
    let DAY=1
    exit  
fi
exit
fi
}

################# 
# # Main Code # #
#################

for (( i = 1; i < 7; i++)); do

    YOMTOVE=$(hdate -dhq $DAY $MONTH $YEAR | awk 'NR==3')
    echo "$YOMTOVE"
    if [[ -n "$YOMTOVE" ]]; then
        grep ^"$YOMTOVE" "$STORDIR"/YomTove.cvs
    # actions based on what holiday it is
    fi
done
Next_Day

exit

我只是在我当地的lug和linuxquestion.org的帮助下得到了这一点,但我讨厌用旧的大脑问题来阻止它们。

感谢。

1 个答案:

答案 0 :(得分:0)

您要么删除第88行或第90行,它们是不匹配的fi。我猜您需要删除第90行。

此外,我认为您需要将case ${ $MONTH } in替换为case ${MONTH} in