Ich habe ungefähr 20 Befehle und muss das alles an die Unix-Shell senden und das Ergebnis kopieren, aber ich weiß nicht, wie ich es machen soll.
Ich bin mir nicht sicher, welche Shell ich habe, da es sich um ein kleines Programm handelt, das mit Mobile Network Managment verbunden ist. Mit diesem kleinen Programm können wir Befehle über die Leitung senden und die Ergebnisse per Schrei empfangen. Aus diesem Grund kann ich keine Skripte verwenden Senden Sie die Befehle.
Befehl 1 - Verbindung mit einem Server herstellen.
Warten Sie, bis Befehl 1 beendet ist
Befehl 2 - Aktualisieren Sie alle Informationen von Server 1 fertig
Warten.
Befehl 3 . Holen Sie sich einen Parameter.
... und noch mehr solche Befehle.
Ich habe es mit und versuchtcmd1 | cmd2 | cmd3
cmd1 & cmd2 & cmd3
undcmd1;cmd2
Das Problem liegt in cmd1
der Verbindung mit einem RNC (Netzwerkelement) und dauert ungefähr 15 Sekunden cmd2
. aber arbeite einfach für den ersten cmd. Irgendeine Ahnung, wie man das macht?
quelle
&&
zwischen Befehlen.Antworten:
Normalerweise nur
cmd1;cmd2;cmd3;cmd4
(wenn Sie es in eine Zeile schreiben wollten) oder mit,cmd1 && cmd2 && cmd3 && cmd4
wenn Sie cmd3 nicht ausführen möchten, wenn cmd2 fehlschlägt.Alternativ dazu können
;
Sie nur einen Befehl pro Zeile schreiben.Wenn Sie möchten, dass die Befehle im Hintergrund parallel ausgeführt werden, können Sie auch verwenden
Jede dieser Methoden kann auch in ein Shell-Skript eingefügt werden. Es gibt kaum einen Unterschied zwischen dem, was Sie in einem Shell-Skript schreiben, und dem, was Sie in der eigentlichen Shell selbst schreiben.
quelle
cmd1;cmd2
Fall (oder imcmd1 && cmd2
Übrigen) wird cmd2 erst ausgeführt, wenn cmd1 beendet wurde (und somit vermutlich beendet ist). Es sollte also kein Problem geben - formulieren Sie Ihre Frage bitte neu oder geben Sie ein Beispiel an, das die Leute tatsächlich reproduzieren können.Vielleicht möchten Sie nachsehen
sleep
, ob Ihre Umgebung dies zulässt. Die komplette Sequenz wäre dann so etwas wiecmd1 && sleep 10s && cmd2
.Hier ist die relevante Manpage zum Thema Schlaf .
quelle
Verwenden Sie einfach ein Skript, eine Datei mit den Befehlen, die nacheinander ausgeführt werden:
In der ersten Zeile (shebang) wird angegeben, dass die folgenden Befehle ausgeführt werden
/bin/sh
sollen. Machen Sie die Datei ausführbar (chmod u+x your-little-script
), und führen Sie sie dann aus./my-little-script
. Auf diese Weise werden Sie keinen Schritt auslassen ;-)Lesen Sie das Handbuch für die Shell, es bietet eine vollständige Programmiersprache. Überprüfen Sie,
bash(1)
ob dies verfügbar ist, oder die Korn-Shellksh(1)
. Sie bieten viele nützliche Funktionen zur Steuerung des Kontrollflusses in Skripten (oder auch interaktiv).quelle
source your-little-script
. your-little-script
ssh
oderPuTTY
vielleicht?Sie könnten so etwas wie
expect
auf Ihrem lokalen Computer ausführen,cmd1
um es zu senden, und warten, bis es beendet ist, bevor Sie es ausgebencmd2
usw. Sie müssen eine angemessene Wartezeit oder eine bestimmte Ausgabe, die angibt, dass der Befehl ausgeführt wurde, herausfinden, um ein richtiges zu schreiben Erwarten Sie Skript.Natürlich werden
cmd1; cmd2; cmd3; cmd4
in einem Befehl die Befehle nacheinander ausgeführt.quelle