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

相關內容