Comment vérifier si gcc a échoué, retourné un avertissement, ou succédé dans Bash?
Comment puis-je vérifier si gcc a réussi à compiler un programme, échoué ou réussi, mais avec un avertissement?
#!/bin/sh
string=$(gcc helloworld.c -o helloworld)
if [ string -n ]; then
echo "Failure"
else
echo "Success!"
fi
Ce vérifie seulement si elle a réussi ou échec ou compilé avec des avertissements).
-n signifie "n'est pas nulle".
Merci!
MODIFIER Si il n'est pas clair, ce n'est pas de travail.
- Une autre raison pourquoi il ne peut pas travailler: la syntaxe correcte est
[ -n "$string" ]
. - Notez que gcc retourne un code de sortie 0 même si des avertissements sont présentés.
- Si la mise en garde doit être pris en compte -Werror peut vous aider.
Vous devez vous connecter pour publier un commentaire.
Vous voulez bash pour tester le code de retour, pas de la sortie. Votre code capture stdout, mais ignore la valeur retournée par GCC (c'est à dire la valeur retournée par la fonction main()).
Votre état de santé devrait être:
GCC renvoie zéro en cas de succès, ou quelque chose d'autre en cas d'échec. Cette ligne dit "si la dernière commande retournée quelque chose d'autre que zéro."
De faire la différence entre la compilation complètement et proprement compilation avec des erreurs, d'abord compiler normalement et test $?. Si elle est non nulle, la compilation a échoué. Ensuite, compilez avec l'option-Werror (avertissements sont traitées comme des erreurs) de l'option. Test $? - si 0, il est compilé sans avertissements. Si elle est non nulle, il est compilé avec des avertissements.
Ex:
-fsyntax-only
(il n'y aura rien de plus que de l'analyse du code complet). En tout cas, l'option de vérification supplémentairegcc
s de sortie (stockage de son stdout dans un fichier temporaire et grep pourarning
[w peut être en majuscule ou pas]) est probablement la meilleure solution.