Nœud child_process.engendrer de multiples commandes
I wan pour automatiser la création et l'extraction de fichier de clés.
Le problème que je me pose est de savoir comment rejoindre les commandes à l'aide de la " | symbole ou solution similaire.
//Original Command
var command='keytool -exportcert -storepass mypass -keypass mypass
-alias myalias -keystore mykey.keystore | openssl sha1 -binary | openssl base64';
//Arguments for the spawn
var keyArgs = [
'-exportcert',
'-storepass','mypass',
'-keypass','mypass',
'-alias','myalias',
'-keystore',"myjey.keystore",
'openssl','sha1',
'-binary',
'openssl','base64',
];
exec('keytool',keyArgs,{cwd:appCreateFolder+"/"+opt.id+"/Certificates"},function(e){
console.log(chalk.cyan('Key created'));
})
A ma réponse vous aider?
OriginalL'auteur | 2016-01-25
Vous devez vous connecter pour publier un commentaire.
De Node.js v6, vous pouvez spécifier un
shell
option dansspawn
méthode permettant d'exécuter une commande à l'aide de shell et donc il est possible de de la chaîne de commandes à l'aide de spawn méthode.Par exemple ceci:
Va déclencher une erreur sur node.js version inférieure à 6:
Mais sur la version 6 et plus il sera de retour résultat attendu:
OriginalL'auteur Jan Jůna
La
|
symbole sur la ligne de commande est appelé "tuyauterie" parce que c'est comme la tuyauterie de flux de données. Ce que vous voulez est d'obtenir ahold de lastdin
(Standard) etstdout
(Standard) flux pour les commandes, vous êtes en cours d'exécution.Par exemple, voici comment vous pouvez frayer la commande echo et tube de sortie de grep:
L'exemple ci-dessus engendre à la fois le "echo" et "grep" des commandes. Il les tuyaux de sortie de la
echo
processus destdout
ruisseau de lagrep
processus destdin
flux. Enfin, nous tuyau de lagrep
processus destdout
flux du processus parent (votre nœud de processus)stdin
flux de sorte que vous pouvez voir le résultat dans votre terminal.La sortie de "The quick brown fox" parce que j'ai mis un caractère de saut de ligne dans le milieu et le grep n'a d'égale que la première ligne contenant "brun".
Vous pouvez utiliser le
exec
fonction pour obtenir le même résultat. Ce sera peut-être plus difficile à maintenir dans le futur, mais si vous avez besoin d'exécuter rapidement un ensemble de canalisations de commandes, vous pouvez entrer la ligne de commande complet de la chaîne (y compris les symboles de tuyau) et de le passer àexec
.Ou au lieu de passer dans la fonction de rappel, vous pourriez juste de rediriger la sortie vers
process.stdin
si tout ce qui vous intéresse c'est de voir la sortie de la commande.Voici un petit exemple de ce que je crois que votre code devrait ressembler à l'aide de
spawn
. Peut nécessiter des réglages, puisqu'il semble spécifique à ce que vous faites.Ou à l'aide de
exec
:OriginalL'auteur Chev