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