it-swarm.com.de

So beenden Sie eine Funktion in Bash

Wie würden Sie eine Funktion verlassen, wenn eine Bedingung wahr ist, ohne das gesamte Skript zu beenden, kehren Sie einfach zurück zu, bevor Sie die Funktion aufrufen.

Beispiel

# 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
}
54
Atomiklan

Benutzen:

return [n]

Von help return

return : 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.
69
mohit

Verwenden Sie den Operator 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
}
15
Nemanja Boric

Wenn Sie aus einer outer - Funktion ohne exiting zurückkehren möchten, können Sie diesen Trick verwenden:

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}"; }

  try-this || fail "This didn't work"
  try-that || fail "That didn't work"
}

Probieren Sie es aus:

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

Dies hat den zusätzlichen Vorteil/Nachteil, dass Sie diese Funktion optional deaktivieren können: __fail_fast=x do-something-complex.

Beachten Sie, dass dies dazu führt, dass die äußerste Funktion 1 zurückgibt.

0
Elliot Cameron