Eu tinha estas linhas:
if [[ $# -eq 0 ]]; then
printf "$fail_color Error - Function: $function, Line: $line_number \n"
printf "do_test: Third parameter missing - expected result\n"
exit 1
fi
Isso funciona bem e me dá a saída pretendida de Error - Function: words, Line: 94
Eu usei o ShellCheck e ele recomendou
printf "$fail_color Error - Function: $function, Line: $line_number \n
^––SC2059 Don't use variables in the printf format string. Use printf "..%s.." "$foo".
Então, tentei alterá-lo para
printf "%s Error - Function: %s, Line: %s \n", "$fail_color", "$function", "$line_number"
mas agora a saída mostra os detalhes do código de cores em vez da cor:
3[31;1m, Error - Function: words,, Line: 94
,do_test: Third parameter missing - expected result
Relacionado - há uma maneira melhor de nomear as strings além de vários %s
's?
Detail - as cores são definidas desta maneira:
fail_color="3[31;1m"
pass_color="3[32;1m"
color_end="3[0m"