Como os comentários dizem "$?" mantém o código de status de retorno do último comando executado. Cada comando é livre para retornar qualquer valor que desejar, e esses valores significam o que eles dizem na página man para aquele comando em particular, mas em geral, a maioria dos comandos unix retorna zero (0) na conclusão bem-sucedida e vários não-zero (geralmente números positivos) para indicar uma variedade de condições de saída.
Alguns exemplos de códigos de saída "especiais" podem ser encontrados aqui: