问答详情
源自:4-3 shell多分支if语句例:判断用户输入的是什么文件

elif后面可以不接fi,遇到嵌套条件怎么办

elif后面可以不接fi,遇到嵌套条件怎么办

比如elfi后面再接elif,如何判断第二个elif是和前一个elfi并列还是属于嵌套在前一个elif的子语句

提问者:穷将人 2017-12-11 17:24

个回答

  • new_stein
    2017-12-21 23:51:22
    已采纳

    如果是人去判断,没有缩进的话,很容易看错的。所以,在写的时候,按照格式进行缩进比较好看清楚。例如这样的。

    #!/bin/bash
    
    echo "Please make your choose : "
    echo "Linux   ----- 1"
    echo "Windows ----- 2"
    echo "Mac     ----- 3"
    
    read -t 30 cho
    
    if [ $cho == "2" ];then          # 第一个 if 的第一个分支
        echo "your choose is : $cho"
    elif [ $cho == "1" ];then        # 第一个 if 的第二个分支
        echo "In Linux , you use which?"
        echo " RedHat  ----- 1"
        echo " Ubuntu  ----- 2"
        read -t 30 li
        if [ $li == "1" ];then 
        # 第二个 if ,嵌套在第一个 if 的第二个分支里面;
        # 解析的时候,系统知道这是开启了第二个if,再碰到elif都会认为是第二个if里面的,
        # 直到碰到了关键字 fi,就认为第二个if结束。
            echo "input is 1, so you use RedHat!"
        elif [ $li == "2" ];then
            echo "input is 2, so you use Ubuntu!"
        else 
            echo "Error input!"
        fi # 关闭内层的if
    elif [ $cho == "3" ];then
    # 这里的elif是外面一层if里面的分支,因为在此之前已经碰到了fi关闭了内层的if
        echo "your choose is : $cho"
    else 
        echo "you make a unknown choose!"
    fi # 关闭外层的if

    不知道解释清除了没有,仔细看都不是很难懂的。