Não há nada dentro da documentação do Bash que diz que 128
é o código de saída inválido necessário.
Bash itself returns the exit status of the last command executed, unless a syntax error occurs, in which case it exits with a non-zero value.
O último comando é o bash embutido exit
(da página man)
exit [n]
Cause the shell to exit with a status of n. If n is omitted, the exit status is that of the last command executed.
Verificou a especificação para o WEXITSTATUS.
WEXITSTATUS(stat_val)
If the value of WIFEXITED(stat_val) is non-zero, this macro evaluates to the low-order 8 bits of the status argument that the child process passed to _exit() or exit(), or the value the child process returned from main().
Portanto, a saída é restrita a um inteiro de 8 bits (0 - 255), portanto, -1
seria 255
. Sair só entende um argumento inteiro e não flutua, por isso é provável que saia um padrão -1
.
bash$ echo $BASH_VERSION
4.1.10(4)-release
bash$ exit foo
exit
bash: exit: foo: numeric argument required
$ echo $?
255
bash$ exit 2
exit
$ echo $?
2
bash$ exit -2
exit
$ echo $?
254