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