Talvez algo como o seguinte faça isso por você:
function work() {
echo "${1#work}"
}
function err_work() {
[ "${1#work}" != "$1" ] && work $*
}
trap "err_work \$BASH_COMMAND" ERR
A função err_work
é então invocada em todos os erros de comando, para descobrir que o comando com falha inicia com "trabalho" e invoca a função work
sem finalizar, com a linha de comandos inicial como argumentos.
É claro que o bash irá reclamar sobre o comando inicial antes de invocar a armadilha, o que parecerá um pouco feio; talvez haja uma maneira de desligar isso, embora eu não tenha encontrado nenhum