Verfügt die Korn-Shell über eine entsprechende Funktion zum command_not_found_handle von Bash?

Verfügt die Korn-Shell über eine entsprechende Funktion zum command_not_found_handle von Bash?

Und hat die Korn-Shell ein Äquivalent zu PROMPT_COMMAND?

In Bash kann ich Funktionsaufrufe mit einem Parameter durchführen, wenn ein einzelnes Eingabewort mit einem regulären Ausdruck übereinstimmt. Kann die Korn-Shell das?

Sagen wir ksh88.

Beispielsweise kann ich in Bash eine Funktion aufrufen, indem ich in der Befehlszeile ein beliebiges einzelnes Wort eingebe, das einem regulären Ausdruck entspricht:

command_not_found_handle()
{

    if [[ $1 =~ ^[A-Z]+\.[0-4]+$ ]]; then
        callFunction "$1"
        return 222;
    else
        printf "command not found: %s\n" "$1" >&2
        return 127
    fi
}

Und

PROMPT_COMMAND='[[ $? -eq 222 ]] && callFunction'

Kann etwas Ähnliches in ksh88 gemacht werden?

Antwort1

ksh93PROMPT_COMMANDkann auch mit einer Disziplinarfunktion unterstützen (überdgk).

function PS1.get 
{
    integer exitval=$?
    eval .sh.value=$($PROMPT_COMMAND)'$PS1'
    return $exitval
}

Antwort2

ksh88hat bereits etwas Besseres als diese Bash-Methode.

Es gibt einen speziellen trapZustand namens ERR. Versuchen Sie also Folgendes:

trap 'echo bla' ERR
false

und Sie sehen, dass es echo blaausgeführt wird.

BTW: Das funktioniert auch mit bash...

verwandte Informationen