E o shell Korn tem um equivalente a PROMPT_COMMAND?
No Bash, posso fazer chamadas de função com um parâmetro quando uma única palavra de entrada corresponde a uma expressão regular. O shell Korn pode fazer isso?
Digamos ksh88.
Por exemplo, no Bash, posso chamar uma função inserindo qualquer palavra na linha de comando que corresponda a uma expressão regular fazendo:
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
}
e
PROMPT_COMMAND='[[ $? -eq 222 ]] && callFunction'
Algo semelhante pode ser feito no ksh88?
Responder1
ksh93
também pode apoiar PROMPT_COMMAND
com uma função de disciplina (viadgk).
function PS1.get
{
integer exitval=$?
eval .sh.value=$($PROMPT_COMMAND)'$PS1'
return $exitval
}
Responder2
ksh88
já tem algo melhor que esse método bash.
Existe uma trap
condição especial chamada ERR
. Então tente isto:
trap 'echo bla' ERR
false
e você vê que echo bla
é executado.
A propósito: isso também funciona com bash
...