Frage

Gibt es eine Möglichkeit für mich, benutzerdefinierte gefälschte Signale in KSH zu implementieren? Derzeit ist Erfassung des ERR-Signals und beendet wird. Jedoch aufgrund einer Änderung gibt es Anrufe, die nicht erfolgreich zurückkehren können jedoch, dass ein gültiger Zustand ist. In einem solchen Fall möchte ich sicherstellen, dass dieser Aufruf ein anderes Signal erzeugt oder die ERR anders handhaben. Gibt es eine Möglichkeit, das zu tun?

War es hilfreich?

Lösung

Sie können kill verwenden jedes Signal, das Sie die aktuelle Shell senden möchten. Sie können exit in einer Subshell oder return in einer Funktion verwenden, um alle Fehlercode festlegen, die Sie möchten.

Versuchen Sie dieses Skript:

#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"

Beispiel:

$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done

Andere Tipps

Vielleicht könnten Sie einfach die Anweisungen wickeln, deren Exit-Codes Sie speziell in einem Aufbau behandeln wollen, die einfach tun würden, was Sie wollen (unter Verwendung „oder“ oder „wenn nicht“ Konstruktionen und Analyse des Exit-Codes).

Das scheint ein viel sauberer Programmierstil zu sein, nicht wahr?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top