O shell Korn tem um recurso equivalente ao command_not_found_handle do Bash?

O shell Korn tem um recurso equivalente ao command_not_found_handle do Bash?

E o shell Korn tem um equivalente a PROMPT_COMMAND?

No Bash, posso fazer chamadas de função com um parâmetro quando uma única palavra de entrada corresponde a uma expressão regular. O shell Korn pode fazer isso?

Digamos ksh88.

Por exemplo, no Bash, posso chamar uma função inserindo qualquer palavra na linha de comando que corresponda a uma expressão regular fazendo:

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
}

e

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

Algo semelhante pode ser feito no ksh88?

Responder1

ksh93também pode apoiar PROMPT_COMMANDcom uma função de disciplina (viadgk).

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

Responder2

ksh88já tem algo melhor que esse método bash.

Existe uma trapcondição especial chamada ERR. Então tente isto:

trap 'echo bla' ERR
false

e você vê que echo blaé executado.

A propósito: isso também funciona com bash...

informação relacionada