LINUX.ORG.RU

bash скрипт

 


0

2

Всем привет

Проблема: игнорируется «return 1» в условии. Причём если убрать рекурсию то «return 1» работает. В итоге должен получить в консоль «ok».

#!/bin/sh

stopVM() {
        echo "Shutdown VM"
        COUNTER=0
                while [[ 0 ]]; do
                        sleep 1
                        echo ${COUNTER}
                        case $1 in
                        0)
                                if [[ ${COUNTER} -eq 10 ]]; then
                                        stopVM 1
                                fi
                                ;;
                        1)
                                if [[ ${COUNTER} -eq 10 ]]; then
                                        return 1;
                                fi
                                ;;
                        esac
                        let COUNTER+=1
                        done;
}

if stopVM 0; then
        echo "ok"
else
        echo "fail"
fi
Или я что-то не понимаю или что то не работает. Вот например такая же логика, но на с++ работает, как задуманно:
#include <iostream>

int func(int);

int main(){

        if (func(0)){
                std::cout << "ok" << std::endl;
        } else {
                std::cout << "fail" << std::endl;
        }

return 0;
}

int func(int a){
        int k = 0;
        while(true){
        std::cout << k << std::endl;
                switch (a) {
                case 0: if(k == 10) func(1);
                
                case 1: if(k == 10) return true;
                
        } k++; }
}



Последнее исправление: ha-ha (всего исправлений: 2)

Куча каких-то магических цифр.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.