Есть ли в оболочке Korn функция, эквивалентная command_not_found_handle из Bash?

Есть ли в оболочке Korn функция, эквивалентная command_not_found_handle из Bash?

А есть ли в оболочке Korn эквивалент PROMPT_COMMAND?

В Bash я могу делать вызовы функций с параметром, когда одно входное слово соответствует регулярному выражению. Может ли оболочка Korn делать это?

Скажем, ksh88.

Например, в Bash я могу вызвать функцию, введя в командной строке любое отдельное слово, соответствующее регулярному выражению, выполнив:

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
}

и

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

Можно ли сделать что-то подобное в ksh88?

решение1

ksh93может также поддерживать PROMPT_COMMANDфункцию дисциплины (черездгк).

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

решение2

ksh88уже есть кое-что получше метода bash.

Есть особое trapсостояние, называемое ERR. Так что попробуйте это:

trap 'echo bla' ERR
false

и вы видите, что это echo blaвыполняется.

Кстати: Это также работает с bash...

Связанный контент