bash:不读取if..elif语句中的else语句

问题描述 投票:0回答:1

我有以下脚本尝试使用if..elif..else语句创建菜单。但是,我的脚本从未在外部while循环中运行else语句,而在内部while循环中运行了吗?它应该回显“重试!”按下菜单中未提及的任何键的语句,但该语句退出循环。它只应打破循环并按“ X”键退出。

#!/bin/bash

while [[ 1 ]]; do

echo 1: menu1
echo 2: menu2
echo 3: menu3
echo X: exit

echo -n enter: ; read menu

if [[ ${menu} -eq 1 ]]; then
    echo menu1
    echo do something in menu1

elif [[ ${menu} -eq 2 ]]; then
    echo menu2
    echo do something in menu2

elif [[ ${menu} -eq 3 ]]; then
    while [[ 1 ]]; do
        echo 11: second menu1
        echo 12: second menu2
        echo 13: exit

        echo -n enter number: ; read second_menu

        if [[ ${second_menu} -eq 11 ]]; then
            echo do something in second menu1
        elif [[ ${second_menu} -eq 12 ]]; then
            echo do something in second menu2
        elif [[ ${second_menu} -eq 13 ]]; then
            break
        else
        echo try again second_menu!
        fi
    done

elif [[ ${menu} -eq 'x' ]] || [[ ${menu} -eq 'X' ]]; then
    break
else
    echo try again menu!
fi
done
bash if-statement
1个回答
0
投票
通常,使用echo时要充分使用您的琴弦是一个好习惯。
© www.soinside.com 2019 - 2024. All rights reserved.