J'ai environ 20 commandes et je dois envoyer tout cela au shell Unix et copier le résultat, mais je ne sais pas comment le faire.
Je ne sais pas quel shell j'ai, car c'est un petit programme connecté à Mobile Network Managment, et avec ce petit programme, nous avons accès pour envoyer des commandes par ligne et recevoir les résultats par cri, c'est pourquoi je ne peux pas utiliser de scripts pour l'envoi des commandements.
Commande 1 - Connectez-vous à un serveur.
Attendez la fin de la commande 1
Commande 2 - Mettre à jour toutes les informations de la fin du serveur 1
Attendez.
Commande 3 . Obtenez un paramètre.
... et plus de ces commandes.
J'ai essayé avec cmd1 | cmd2 | cmd3
et cmd1 & cmd2 & cmd3
etcmd1;cmd2
Le problème est avec cmd1
sa connexion à un RNC (élément de réseau) et prend environ 15 secondes, après cela cmd2
a du sens. mais juste travailler pour le premier cmd. Un indice, comment gérer cela?
la source
&&
entre les commandes.Réponses:
Habituellement juste
cmd1;cmd2;cmd3;cmd4
(si vous vouliez l'écrire sur une seule ligne), ou utilisezcmd1 && cmd2 && cmd3 && cmd4
si vous ne voulez pas exécuter cmd3 lorsque cmd2 échoue.Sinon,
;
vous pouvez simplement écrire une commande par ligne.Si vous souhaitez que les commandes s'exécutent en parallèle en arrière-plan, vous pouvez également utiliser
L'une ou l'autre de ces méthodes peut également être placée dans un script shell. Il y a peu de différence entre ce que vous écrivez dans un script shell et ce que vous écrivez dans le shell lui-même.
la source
cmd1;cmd2
cas (oucmd1 && cmd2
d'ailleurs) cmd2 ne fonctionnera pas tant que cmd1 ne sera pas terminé (et donc probablement terminé). Il ne devrait donc pas y avoir de problème - veuillez reformuler votre question ou fournir un exemple que les gens peuvent réellement reproduire.Vous voudrez peut-être examiner
sleep
, si votre environnement le permet. La séquence complète ressemblerait alors à quelque chosecmd1 && sleep 10s && cmd2
.Voici la page de manuel appropriée pour dormir .
la source
Utilisez simplement un script, un fichier contenant les commandes à exécuter les unes après les autres, comme:
La première ligne (shebang) indique d'exécuter les commandes suivantes en utilisant
/bin/sh
, rendez le fichier exécutable (chmod u+x your-little-script
), puis vous pouvez l'exécuter par./my-little-script
. De cette façon, vous ne laisserez pas une étape ;-)Lisez le manuel du shell, il fournit un langage de programmation complet. Vérifiez
bash(1)
si c'est ce qui est disponible, ou bien le shell Kornksh(1)
. Ils offrent de nombreuses fonctionnalités utiles pour contrôler le flux de contrôle dans les scripts (ou interactivement, d'ailleurs).la source
source your-little-script
(ou. your-little-script
pour faire court).ssh
ouPuTTY
peut-être?Vous pouvez exécuter quelque chose comme
expect
sur votre ordinateur local pour envoyercmd1
et attendre qu'il se termine avant d'émettre,cmd2
etc. Vous devez déterminer un délai raisonnable pour attendre, ou une sortie spécifique qui indique que la commande est exécutée, afin d'écrire une Attendez-vous à un script.Bien sûr,
cmd1; cmd2; cmd3; cmd4
dans une commande, les commandes seront exécutées l'une après l'autre.la source