Bash – hogyan futtassunk egy parancsot az előző befejezése után? [duplicate]

Erre a kérdésre már itt vannak válaszok :

megjegyzések

  • terdon ' alábbi válasz kiváló, de a pontosvesszőket eldobhatja a ' verzióban, amelyet fentebb bemutatott, valamint a parancsokat a szkriptben sorrendben hajtják végre, mindegyiket a saját sorában. A pontosvessző felesleges, kivéve, ha az összes parancsot egy sorba rakja.

Válasz

Igen, újra helyesen csinálja. A Shell szkriptek az egyes parancsokat egymás után futtatják, és várják az első befejezését, mielőtt a következő elindul. Csatlakozhat a parancsokhoz a ; paranccsal, vagy külön sorokban is megadhatja őket. :

command1; command2 

vagy

command1 command2 

Nincs szükség ; ha a parancsok külön sorokban vannak. A második parancs futtatását is kiválaszthatja, ha az első sikeresen kilépett. Ehhez csatlakozzon hozzájuk a && :

command1 && command2 

vagy

command1 && command2 

További információ a különböző kezelő operátorokról te, lásd itt .

Megjegyzések

  • Emlékezz arra, hogy a &&, az OP egyszerűen hozzáadhat set -e a szkript elején. Természetesen ez nem egy folyamatlánc-operátor.
  • @didierc, amely miatt a szkript kilép minden hiba esetén, és rengeteg felesleges előrehaladási jelentést is készít. Nem ugyanaz, mint két specifikus parancs összekapcsolása a && -vel.
  • @polemon nem igazán, nem. Ez egy nagyon egyszerű kérdés egy kezdő felhasználó részéről. Nem ' nem látom értelmét a túl sok részlet hozzáadásának. Ne feledje, hogy ' nem is említettem || -t. Nem értem, hogy ' valójában miért van itt jelentősége az wait nak, minden bizonnyal nincs rá szükség ahhoz, hogy egyszerûen futtassuk az egyik parancsot a másik után. Csak a folyamatok finomabb szemcsézésére lenne szükség. Nyugodtan küldjön természetesen választ, de én ' inkább az egyszerűségemet tartom.
  • @terdon wouldn ' t, amelyek set -v vagy set -x helyett set -e?
  • @didierc lásd a fenti megjegyzésemet, a set -x -re gondoltam, sajnálom.

Válasz

Ilyen ismétlődő esetben a for loop használatát javasoltam.

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

Ez egy egysoros verzió, amely a parancssorhoz alkalmas, de szkriptben is használható. A változó neve körüli zárójelekre akkor van szükség, ha egy változó be van ágyazva egy karakterláncba szóköz nélkül.

A hurok nemcsak sorrendben küldi el a kéréseket, de szükség esetén könnyebben módosíthatja és újra felhasználhatja, anélkül, hogy sok aggály lenne elírási hibák.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük