¿Y el shell Korn tiene un equivalente a PROMPT_COMMAND?
En Bash, puedo realizar llamadas a funciones con un parámetro cuando una sola palabra de entrada coincide con una expresión regular. ¿Puede Korn shell hacer esto?
Digamos ksh88.
Por ejemplo, en Bash, puedo llamar a una función ingresando cualquier palabra en la línea de comando que coincida con una expresión regular haciendo:
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
}
y
PROMPT_COMMAND='[[ $? -eq 222 ]] && callFunction'
¿Se puede hacer algo similar en ksh88?
Respuesta1
ksh93
También puede apoyar PROMPT_COMMAND
con una función de disciplina (a través dedgk).
function PS1.get
{
integer exitval=$?
eval .sh.value=$($PROMPT_COMMAND)'$PS1'
return $exitval
}
Respuesta2
ksh88
Ya tiene algo mejor que ese método bash.
Hay una trap
condición especial llamada ERR
. Entonces prueba esto:
trap 'echo bla' ERR
false
y ves que echo bla
se ejecuta.
Por cierto: esto también funciona con bash
...