( return 1 )
Isso é executado em um subnível. Ele termina a sub-shell imediatamente e, se você pegar o código de retorno do shell, ele será 1
. A própria função retorna 0
na linha depois disso.
(Consulte Comandos de agrupamento na especificação da linguagem de comandos da Shell.)
Compare com o formulário {}
que não introduz um subshell:
#! /bin/sh
func () {
( return 42 )
echo "One: $?"
{ return 1; }
echo "Two: $?"
return 2
}
func
echo "Three: $?"
Saída (observe a ausência de "Dois"):
One: 42
Three: 1