web-dev-qa-db-fra.com

Comment envoyer de nombreuses commandes à Shell et attendre la commande derrière les extrémités

J'ai environ 20 commandes et je dois envoyer tout cela à Unix Shell et copier le résultat, mais je ne sais pas comment le faire.

Je ne suis pas sûr de ce que j'ai Shell, 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, pour cette raison je ne peux pas utiliser de scripts pour l'envoi des commandements.

Commande 1 - Connectez-vous avec un serveur.

Attendez la fin de la commande 1

Command 2 - Mettre à jour toutes les informations du serveur 1 terminer

Attendre.

Commande. Obtenez un paramètre.

... et plus de ces commandes.

I essayé avec cmd1 | cmd2 | cmd3etcmd1 & cmd2 & cmd3 et cmd1;cmd2

Le problème est avec cmd1 il est connecté à 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?

16

Habituellement juste cmd1;cmd2;cmd3;cmd4 (si vous vouliez l'écrire sur une seule ligne), ou en utilisant cmd1 && cmd2 && cmd3 && cmd4 si vous ne voulez pas exécuter cmd3 lorsque cmd2 échoue.

Alternativement à ; vous pouvez simplement écrire une commande par ligne.

cmd1
cmd2
cmd3
cmd4

Si vous souhaitez que les commandes s'exécutent en parallèle en arrière-plan, vous pouvez également utiliser

cmd1 &
cmd2 &
cmd3 &
cmd4 &
wait # for cmd1-4 to finish

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.

20
frostschutz

Vous voudrez peut-être examiner sleep, si votre environnement le permet. La séquence complète serait alors quelque chose comme cmd1 && sleep 10s && cmd2.
Voici la page de manuel appropriée pour le sommeil .

2
LoicAG

Utilisez simplement un script, un fichier contenant les commandes à exécuter les unes après les autres, comme:

#!/bin/sh

command-01
command-02
...
command-20

La première ligne (Shebang) indique d'exécuter les commandes suivantes à l'aide de /bin/sh, De rendre le fichier exécutable (chmod u+x your-little-script), Puis de 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. Consultez bash(1) si c'est ce qui est disponible, ou bien le Korn Shell ksh(1). Ils offrent de nombreuses fonctionnalités utiles pour contrôler le flux de contrôle dans les scripts (ou interactivement, d'ailleurs).

1
vonbrand