Verwenden Sie eine benutzerdefinierte Testfunktion in einer bedingten Bash-Anweisung

Verwenden Sie eine benutzerdefinierte Testfunktion in einer bedingten Bash-Anweisung

Ich habe eine Bash-Funktion namens , die entweder oder numericzurückgibt .10

numeric ()
{
  # compute k either 1 or 0
  echo "$k"
}

Wie kann ich diese Funktion in einer bedingten Anweisung verwenden, um zu überprüfen, ob eine Variable varnumerisch ist?

Antwort1

Bedenken Sie, dass im Kontext bedingter Shell-Ausdrücke ein Rückgabewert 0„Erfolg“ oder „Wahr“ bedeutet und ein Wert ungleich Null „Fehler“ oder „Falsch“ bedeutet. Ich würde daher empfehlen, die Funktion so anzupassen, dass sie etwas zurückgibt, 0wenn das Argument ein numerischer Wert ist.

Vorausgesetzt, dass es sich bei der „bedingten Anweisung“ um ein ifKonstrukt handelt, funktioniert Folgendes:

if numeric "$var"
then
   # Code if $var is numeric
else
   echo "$var is not numeric"
fi

Antwort2

Rückgabe verwenden

numeric ()
{
  # compute k either 1 or 0 || return 1
  echo "$k"
  return 0
}

numeric || exit 1

verwandte Informationen