Je veux tester s'il y a une sortie de diff
(tester si les fichiers sont les mêmes), si aucun echo "Passed $x" else echo "Failed $x"
. Je suis venu avec une étape intermédiaire (enregistrer la sortie de diff dans un fichier puis lire à partir du fichier)
diff "./helloworld$x.out" "./output/helloworld$x.out" > tmp.txt;
output="`cat tmp.txt`";
if [ "$output" = "" ];
then
echo "Passed $x";
else
echo "Failed $x";
fi;
Je suis sûr que le code peut être amélioré? La question principale est: est-il possible de sauvegarder la sortie de diff
directement dans une variable?
... > /dev/null
passe dans ce contexte. La sortie de diff sera goto / dev / null mais n'est-ce pas rien?diff
peut même supprimer complètement la sortie à l'exception du message "Files / bin / bash et / bin / sh differ" en utilisant le code ci-dessous.Si vous souhaitez même masquer ce message, vous devez ajouter
> /dev/null
après la commande diff pour masquer la sortie dediff
:/dev/null
est un fichier spécial qui agit comme un trou noir, si vous y écrivez, il disparaîtra, si vous le lisez, vous ne récupérerez rien.Notez que bash n'a pas besoin
;
de terminer les lignes.Quant à la question d'origine, pour enregistrer la sortie d'un programme dans une variable:
Autres moyens de vérifier si une variable est vide:
Si vous utilisez Bash, les deux dernières commandes sont recommandées pour la comparaison de chaînes. Sinon, le premier et
[ -n "$output" ]
est recommandé.la source
a) La sortie de command1 peut être capturée avec
ou avec des crochets, mais ceux-ci sont déconseillés, car vous ne pouvez pas les imbriquer, et ils peuvent être difficiles à distinguer des apostrophes, selon la police:
b) Au lieu d'écrire dans un fichier, puis de lire ce fichier (ou de saisir la sortie, puis de l'écho), vous utiliseriez directement un tuyau:
=>
mais dans votre exemple, vous n'êtes pas intéressé par le résultat, mais par le résultat du programme - cela at-il fonctionné?
Pour en savoir plus sur l'utilisation de && et || recherchez "raccourci ET et raccourci OU".
Pour garder la sortie propre, vous pouvez rediriger la sortie de 'diff' vers nulle part:
Pour saisir le succès et l'évaluer plus tard, vous stockez le résultat de la dernière commande dans une variable avec $ ?:
la source
Si vous voulez savoir si deux fichiers sont identiques ou différents (mais ne vous souciez pas de la différence),
cmp
c'est plus approprié.la source