условное выполнение шагов после вызываемой функции в bash - PullRequest
0 голосов
/ 09 апреля 2020

Требование: на основе условия IF в вызываемой функции: myfun c, echo hello в for l oop не должно выполняться, и управление должно go до следующей итерации.

В приведенном ниже сценарии, когда значение k становится равным 2 и 3, echo hello не должен выполняться.

Это сценарий, который я пытаюсь разработать, но безуспешно.

#!/usr/bin/env bash

    myfunc() {
      if [[ $k -gt 1 ]]; then
        echo "in the loop"
        return
       else
         echo continue
      fi
    }


    for (( k=1; k<=3; k++ ))
    do
      myfunc
      echo hello
    done

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Ваш l oop все не так, и я не знаю, почему у вас есть if / else, если вы просто заинтересованы в одном выводе:

#!/usr/bin/env bash

myfunc() {
  if [[ $k -lt 2 ]]; then
     echo "hello my value is $k"
  fi
}


for (( k=1; k<=3; k++ ))
do
  myfunc
  echo "$k just to prove it is looping" # this is always run regardless of what's in the function
done

вывод:

hello my value is 1
1 just to prove it is looping
2 just to prove it is looping
3 just to prove it is looping
0 голосов
/ 09 апреля 2020
#!/usr/bin/env bash

    myfunc() {
      if [[ $k -gt 1 ]]; then
        echo "in the loop"
        x=1
       else
         echo Welcome
      fi
    }


    for (( k=1; k<=3; k++ ))
    do
      myfunc
        if [[ $x -eq 1 ]];then
          continue
       fi
      echo hello
    done
...