Bash – jak spustit příkaz po předchozím dokončení? [duplicate]

Tato otázka již obsahuje odpovědi :

Komentáře

  • terdon ' níže odpověď je vynikající, ale můžete uvést středníky ve verzi, kterou jste ' zobrazili výše, stejně jako příkazy jsou prováděny v pořadí ve skriptu, každý na svém vlastním řádku. Středník je nadbytečný, pokud nedáte všechny příkazy na jeden řádek.

Odpověď

Ano, jste znovu dělá to správným způsobem. Shell skripty spustí každý příkaz postupně a čekají na dokončení prvního před spuštěním dalšího. Příkazy můžete spojit pomocí ; nebo je nechat na samostatných řádcích :

command1; command2 

nebo

command1 command2 

Není potřeba ; pokud jsou příkazy na samostatných řádcích. Můžete také zvolit spuštění druhého příkazu, pouze pokud byl první úspěšně ukončen. Chcete-li tak učinit, spojte je pomocí && :

command1 && command2 

nebo

command1 && command2 

Další informace o různých kontrolních operátorech dostupných pro vidíte zde .

Komentáře

  • Připomeňte si, že místo &&, OP by mohl jednoduše přidat set -e na začátku skriptu. Samozřejmě to není operátor řetězení procesů.
  • @didierc, který způsobí ukončení skriptu při jakékoli chybě, a také vytvoří spoustu zbytečných zpráv o postupu. To není totéž jako propojení dvou konkrétních příkazů s &&.
  • @polemon ne tak docela, ne. Toto je velmi jednoduchá otázka pro začínajícího uživatele. Nevidím ' přidávání příliš mnoha podrobností příliš smysl. Všimněte si, že jsem ' ani nezmínil ||. Nechci ' opravdu pochopit, proč je wait zde relevantní, rozhodně to není nutné pro jednoduchý úkol spouštění jednoho příkazu za druhým. Bylo by to zapotřebí pouze pro jemnější kontrolu procesů. Samozřejmě můžete odeslat odpověď, ale já ' si raději nechám jednoduchost.
  • @terdon by ' t set -v nebo set -x spíše než set -e?
  • @didierc viz můj komentář výše, myslel jsem na set -x, promiň.

odpověď

V opakujících se případech, jako je tento, jsem doporučil použít smyčku for .

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

Toto je jednořádková verze vhodná pro příkazový řádek, ale lze ji použít i ve skriptu. Závorky kolem názvu proměnné jsou potřebné při vkládání proměnné do řetězce bez mezer.

Smyčka nejenže posílá požadavky v pořadí, ale je také snazší ji vyladit a znovu použít, když je potřeba, aniž by bylo nutné se tolik starat o překlepy.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *