bash中意外标记“elif”附近的语法错误

时间:2011-12-01 14:01:16

标签: bash unix if-statement

这是我显示一些对话框的代码。

#!/bin/bash
output=$(zenity  --list --text="Choose action" --column= --hide-header "Hidden Files" "Desktop")
if [ $output = "Hidden Files"]
    then
        output2=$(zenity  --list --text="Do what?" --column= --hide-header "Show" "Hide")
        if [ $output2 = "Show"]
            then
                echo showing files
            else
                echo hiding files
elif [ $output = "Desktop"];then
        output3=$(zenity  --list --text="Do what?" --column= --hide-header "Show" "Hide")
        if [ $output2 = "Show"]
            then
                echo showing files
            else
                echo hiding files
    else
        exit
fi

第一个对话框后出现此错误:

systool.sh: line 12: syntax error near unexpected token `elif'
systool.sh: line 12: `elif [ $output = "Desktop"];then'

什么错了?

3 个答案:

答案 0 :(得分:4)

您需要使用fi关闭两个内部if-else语句。

例如:

    if [ $output2 = "Show"]
        then
            echo showing files
        else
            echo hiding files
    fi

在if条件中,在结束]之前还需要一个空格。例如:

    if [ $output2 = "Show" ]

答案 1 :(得分:0)

您的内部if没有相应的fi s。

答案 2 :(得分:0)

fi

之后你错过了echo hiding files