¿Korn Shell tiene una característica equivalente a command_not_found_handle de Bash?

¿Korn Shell tiene una característica equivalente a command_not_found_handle de Bash?

¿Y el shell Korn tiene un equivalente a PROMPT_COMMAND?

En Bash, puedo realizar llamadas a funciones con un parámetro cuando una sola palabra de entrada coincide con una expresión regular. ¿Puede Korn shell hacer esto?

Digamos ksh88.

Por ejemplo, en Bash, puedo llamar a una función ingresando cualquier palabra en la línea de comando que coincida con una expresión regular haciendo:

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
}

y

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

¿Se puede hacer algo similar en ksh88?

Respuesta1

ksh93También puede apoyar PROMPT_COMMANDcon una función de disciplina (a través dedgk).

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

Respuesta2

ksh88Ya tiene algo mejor que ese método bash.

Hay una trapcondición especial llamada ERR. Entonces prueba esto:

trap 'echo bla' ERR
false

y ves que echo blase ejecuta.

Por cierto: esto también funciona con bash...

información relacionada