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
規律機能(経由)でサポートすることもできます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
ところで: これは...でも機能します。