&&
führt das zweite Argument nur aus, wenn das erste Argument erfolgreich war, dh mit Exitcode 0 abgeschlossen wurde. Exitcode 4 bedeutet "Fehler" für die Shell, also echo
wird der nicht ausgeführt. Versuchen
gcc foo.c && ./a.out || echo $?
Wenn Sie den Exit-Code nur anzeigen möchten, wenn er nicht Null ist. Wenn Sie es immer sehen wollen, verwenden Sie
gcc foo.c && ./a.out ; echo $?
Beachten Sie, dass es den Exit-Code des melden kann, gcc
wenn es nicht Null ist.