Estou procurando uma solução que me permita automaticamente chamar uma função com parâmetros específicos em uma determinada situação.
Aqui está o cenário específico:
Quando ocorre um erro, posso configurar meu manipulador de erros assim:
function _trap_err () {
echo "An error occurred in "$1":"$2" on "$3":"$4".
}
E eu posso definir a armadilha para coletar os dados de depuração que preciso automaticamente - no momento correto da execução .
trap '_trap_err "$BASH_SOURCE" "$BASH_LINENO" "$FUNCNAME" "$BASH_COMMAND" ' ERR
AFAIK, isso só funciona quando o bash detecta um erro e emite o sinal.
Gostaria de estender esse comportamento para que eu possa sinalizar manualmente um erro quando uma verificação falhar, por exemplo, ao verificar os argumentos da função:
# Usage: myfunc <requiredarg>
function myfunc () {
[[ $# != 1 ]] && emit_err_signal
}
Se houver uma maneira de emitir manualmente esse sinal de erro, é possível coletar automaticamente esse argumento de depuração no momento correto em execução para fornecer informações de depuração significativas.
A alternativa é simplesmente exibir uma mensagem de erro - que deve ser codificada em cada verificação - e não exibe onde o erro ocorreu.
Alguma idéia?
EDITAR
Eu deveria ter especificado que isso é para meus arquivos .bashrc e não quero que eles saiam, eu só quero informações de depuração. Armadilhas podem ter um exagero, acho que a seguinte solução pode funcionar:
function _debug () {
local _message=${1:-""}
printf "\e[1;32m[BASHRC] DEBUG: %-20s - %s\e[0m\n" "$BASH_SOURCE:$BASH_LINENO" "$_message"
}
_debug "Testing debug message."
> [BASHRC] DEBUG: .bashrc.d/bashrc:18 - Testing debug message.