it-swarm.com.de

Bash - wie führe ich einen Befehl aus, nachdem der vorherige beendet wurde?

Derzeit habe ich ein script.sh Datei mit folgendem Inhalt:

#!/bin/bash
wget -q http://exemple.com/page1.php;
wget -q http://exemple.com/page2.php;
wget -q http://exemple.com/page3.php;

Ich möchte die Befehle einzeln ausführen, wenn der vorherige beendet ist. Mache ich es richtig Ich habe noch nie mit Linux gearbeitet und versucht, danach zu suchen, aber keine Lösungen gefunden.

104
drogy

Ja, du machst es richtig. Shell-Skripte führen jeden Befehl nacheinander aus und warten darauf, dass der erste beendet wird, bevor der nächste gestartet wird. Sie können Befehle entweder mit ; Verbinden oder in separaten Zeilen einfügen:

command1; command2

oder

command1
command2

; Ist nicht erforderlich, wenn sich die Befehle in separaten Zeilen befinden. Sie können den zweiten Befehl auch nur ausführen, wenn der erste erfolgreich beendet wurde. Verbinden Sie sie dazu mit &&:

command1 && command2

oder

command1 &&
command2

Weitere Informationen zu den verschiedenen Steuerungsoperatoren, die Ihnen zur Verfügung stehen, finden Sie unter hier .

151
terdon

In einem sich wiederholenden Fall wie diesem empfahl ich die Verwendung einer for-Schleife.

for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done

Dies ist eine einzeilige Version, die für die Befehlszeile geeignet ist, aber auch in einem Skript verwendet werden kann. Die geschweiften Klammern um den Variablennamen werden benötigt, wenn eine Variable in eine Zeichenfolge ohne Leerzeichen eingebettet wird.

Die Schleife sendet nicht nur die Anforderungen in der richtigen Reihenfolge, sondern ist auch einfacher zu optimieren und bei Bedarf wiederzuverwenden, ohne sich um Tippfehler sorgen zu müssen.

13
Rache