finger
não considera que uma situação não encontrada vale um código de retorno diferente de zero.
Existem no entanto casos de erros reais como:
$ finger -x
finger: invalid option -- 'x'
usage: finger [-lmps] [login ...]
$ echo $?
1
A alteração do comportamento finger
seria trivial, modificando seu código-fonte, mas isso não foi feito provavelmente para não quebrar os scripts que esperam que o dedo nunca falhe.
Eu tenho medo que você tenha que continuar com o resultado do pós-processamento para alcançar sua meta se precisar ficar com finger
.
Como alternativa, você pode usar getent
, que fornece um valor de retorno útil:
$ getent passwd root
root:x:0:0:root:/root:/bin/bash
$ echo $?
0
$ getent passwd foo
$ echo $?
2