Korn シェルには、Bash の command_not_found_handle と同等の機能がありますか?

Korn シェルには、Bash の command_not_found_handle と同等の機能がありますか?

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

ksh93PROMPT_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ところで: これは...でも機能します。

関連情報