Experiência - substitua "criar" por "verdadeiro" e "falso" (estes são comandos que não fazem nada, exceto para retornar o status implícito) e tente entender por que você obtém os resultados que você faz.
edit: Aqui está o tipo de experiência que tenho em mente:
for cmd in true false ; do
printf "\n%s\n" $cmd
$cmd && echo "1 Success" || echo "1 Fail"
$cmd || echo "2 Fail" && echo "2 Success"
$cmd || echo "3 Success" && echo "3 Fail"
done
mas para o make, você deve descobrir quais valores de retorno a versão de fazer você usar retornos - aqui está um trecho do que estou executando:
STATUS DE SAÍDA
O GNU faz saídas com um status zero se todos os makefiles foram analisados com sucesso e nenhum destino criado falhou.
Um status de um será retornado se o sinalizador -q for usado e o make determinar que um destino precisa ser reconstruído.
Um status de dois será retornado se algum erro for encontrado.
e um script com uma intenção semelhante que lida com esses valores de retorno:
for cmd in true false ; do
# make;
$cmd
status=$?;
case "$status" in
0) echo 'all makefiles parsed, no builds failed'; ;;
1) echo 'target needs to be rebuilt'; ;;
2) echo 'error(s) in make'; ;;
*) echo "make returned unknown status: $status"; ;;
esac;
done
return $status