[bash] bash에서 함수를 종료하는 방법

전체 스크립트를 죽이지 않고 조건이 참인 경우 함수를 종료하는 방법은 함수를 호출하기 전으로 돌아갑니다.

# Start script
Do scripty stuff here
Ok now lets call FUNCT
FUNCT
Here is A to come back to

function FUNCT {
  if [ blah is false ]; then
    exit the function and go up to A
  else
    keep running the function
  fi
}



답변

사용하다:

return [n]

에서 help return

반환 : 반환 [n]

Return from a shell function.

Causes a function or sourced script to exit with the return value
specified by N.  If N is omitted, the return status is that of the
last command executed within the function or script.

Exit Status:
Returns N, or failure if the shell is not executing a function or script.


답변

return연산자 사용 :

function FUNCT {
  if [ blah is false ]; then
    return 1 # or return 0, or even you can omit the argument.
  else
    keep running the function
  fi
}


답변

오류없이 외부 함수 에서 반환 exit하려면 다음 트릭을 사용할 수 있습니다.

do-something-complex() {
  # Using `return` here would only return from `fail`, not from `do-something-complex`.
  # Using `exit` would close the entire shell.
  # So we (ab)use a different feature. :)
  fail() { : "${__fail_fast:?$1}"; }

  nested-func() {
      try-this || fail "This didn't work"
      try-that || fail "That didn't work"
  }
  nested-func
}

그것을 시도 :

$ do-something-complex
try-this: command not found
bash: __fail_fast: This didn't work

여기에는이 기능을 선택적으로 끌 수있는 추가 이점 / 단점이 있습니다 __fail_fast=x do-something-complex.

이로 인해 가장 바깥 쪽 함수가 1을 반환합니다.


답변