Existem alguns comandos que não imprimem nada no padrão nem na saída de erro.
Mas eles definem o código de retorno de acordo. O código de retorno de qualquer comando pode ser acessado pela variável $?
logo após a execução do comando. Se for 0, o comando foi executado com sucesso. Se for um valor maior que 0, ocorreu um erro.
Isso é muito conveniente ao usar esses comandos no script, já que você precisa fazer algo assim:
command && echo "Returned an OK status" || echo "Returned an non-OK status"
Ou quando mais ações forem tomadas com base no status retornado:
command
if [ $? == 0 ]; then
# code to be executed when the command was executed successfully
else
# code to be executed when the command was not executed successfully
fi
Em outros casos, esta é a maneira usada pelo comando para dizer que algo está habilitado ou não, como o comando selinuxenabled
que retorna 0 se o SE (Security Enhanced) Linux estiver ativado, 1 se não estiver.