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