在bash脚本中嵌套while循环-内部被跳过

时间:2019-03-13 12:23:05

标签: bash shell nested-loops

我尝试阅读有关此内容的信息,但找不到解决我问题的任何方法。 问题是:我有一个嵌套的while循环,并且内部被完全跳过了。 outter循环运行良好,内部代码在取出并单独运行时确实按预期工作。 我对此并不陌生,所以只想寻找一种直接解决的方法,不一定是重写所有内容的方法(除非必要)哈哈。 我省略了一些替换为通用[command]等的内容。

CREATE TEMPORARY TABLE ... SELECT

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的缩进具有误导性:

使用正确的缩进检查代码

guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"

guidver=true;
while $guidver; do
    guidver=false;
    read -p "
    Input log GUID below and press 'Enter'?
    "   guid
    if [[ $guid == ????????-????-????-????-???????????? ]]; then
        printf "Good GUID, continuing\n";
    else echo "Bad value, please use only Index GUIDs."; 
        guidver=true
        olver=true;
        while $olver; do
            olver=false;
            if $olcmd | grep -i '[text]'>/dev/null; then
                printf "\n[text]\n\n"
                    continue
                #       guidver=false;
            else printf "\n[text]\n\n"
                olver=true;
                break
            fi
        done
    fi
done

看到了吗?您的第二个while在第一个else语句的if分支内

我想,你的意思是

guid=0
procedure=0
olcmd="${userbin}/[command] ${guid}"

guidver=true;
while $guidver; do
    guidver=false;
    read -p "
    Input log GUID below and press 'Enter'?
    "   guid
    if [[ $guid == ????????-????-????-????-???????????? ]]; then
        printf "Good GUID, continuing\n";
    else echo "Bad value, please use only Index GUIDs."; 
        guidver=true
    fi

    olver=true;
    while $olver; do
        olver=false;
        if $olcmd | grep -i '[text]'>/dev/null; then
            printf "\n[text]\n\n"
                continue
            #       guidver=false;
        else printf "\n[text]\n\n"
            olver=true;
            break
        fi
    done
done