전체 스크립트를 죽이지 않고 조건이 참인 경우 함수를 종료하는 방법은 함수를 호출하기 전으로 돌아갑니다.
예
# 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을 반환합니다.