Exécuter la commande bash dans Node.js et obtenir le code de sortie
Je peux exécuter une commande bash dans node.js comme:
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", function(err, stdout, stderr) {
console.log(stdout);
});
Comment puis-je obtenir le code de sortie de cette commande (ls -la
dans cet exemple)? J'ai essayé de courir
exec("ls -la", function(err, stdout, stderr) {
exec("echo $?", function(err, stdout, stderr) {
console.log(stdout);
});
});
Ce en quelque sorte retourne toujours 0 quel que soit le code de sortie de la commande précédente. Ce qui me manque?
votre premier exemple est déjà en vous donnant la sortie standard (stdout) dans la console.journal
OriginalL'auteur mbacvanski | 2016-06-09
Vous devez vous connecter pour publier un commentaire.
Ces 2 commandes sont en cours d'exécution en séparer les coquilles.
Pour obtenir le code, vous devriez être en mesure de vérifier
err.code
dans votre fonction de rappel.Si cela ne fonctionne pas, vous devez ajouter un
exit
gestionnaire d'événementpar exemple
exit
gestionnaire d'événements de grandes œuvres;err.code
seulement renvoie un nombre si le code d'erreur n'est pas 0.Aussi
execSync(command[, options])
pour ceux qui sont intéressés dans la version synchrone. nodejs.org/api/...OriginalL'auteur Joe
De la documentation:
Donc:
Devrait fonctionner.
OriginalL'auteur andlrc
Dans le nœud de la documentation, j'ai trouvé cette information pour la fonction de rappel:
En cas de succès, l'erreur sera nulle. En cas d'erreur, l'erreur sera une instance de l'Erreur. L'erreur.code de la propriété sera le code de sortie du processus enfant tout en erreur.le signal sera réglé sur le signal qui a mis fin à la procédure. Tout code de sortie différent de 0 est considéré comme une erreur.
OriginalL'auteur Borja Tur