Korn shell 是否具有与 Bash 的 command_not_found_handle 等效的功能?

Korn shell 是否具有与 Bash 的 command_not_found_handle 等效的功能?

Korn shell 是否有与 PROMPT_COMMAND 等效的功能?

在 Bash 中,当单个输入单词与正则表达式匹配时,我可以使用参数进行函数调用。 Korn shell 可以做到这一点吗?

假设是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纪律功能(通过dgk)。

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......

相关内容