意外的令牌“elif”

mas*_*3ak 0 shell bash solaris

在这里,我正在尝试编写可在特定日期运行的 shell,Sun Solaris 10 不支持新功能,但我一直在使用syntax error near unexpected tokenelif'`

DAY_Word=$(date +%A)

Nomral_Day=$(date +%d)
MONTH=$(date +%m)

if [ "$Nomral_Day" -eq 01 ] || [ "$Nomral_Day" -eq 16 ] && [ "$MONTH" -ne 02 ]
then

###run integrity after

elif [ "$Nomral_Day" -eq 12 ] || [ "$Nomral_Day" -eq 28 ] && [ "$DAY_Word" = "Thursday" ] && [ "$MONTH" -ne 02 ]
then

### run integrity before

elif [ "$Nomral_Day" -eq 13 ] || [ "$Nomral_Day" -eq 29 ] && [ "$DAY_Word" != "Friday" ] && [ "$MONTH" -ne 02 ]
then

### run integrity before

elif [ "$Nomral_Day" -eq 25 ] && [ "$DAY_Word" = "Thursday" ] && [ "$MONTH" -eq 02 ]
then

## run integrity before

elif [ "$Nomral_Day" -eq 26 ] && [ "$DAY_Word" != "Friday" ] && [ "$MONTH" -eq 02 ]
then

## run integrity before

fi
Run Code Online (Sandbox Code Playgroud)

Wil*_*ard 5

then和之间的命令不能省略elif。您必须包含一个命令。

添加命令true,您的脚本应该可以工作。

  • 在这种情况下,命令 `:` 通常用作占位符。是的,单个冒号是有效的 shell 命令。它什么都不做,它在语法需要命令但你不想放置任何“真实”命令的情况下使用。 (4认同)