Всем привет
подскажите, не работает скрипт. В итоге в консоль должен получить «ок».Игнорируется «return 1» в условии. Причём если убрать рекурсию то «return 1» работает.
#!/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++; }
}



