Bash – hvordan kjører du en kommando etter at forrige var ferdig? [duplikat]

Dette spørsmålet har allerede svar her :

Kommentarer

  • terdon ' s svar nedenfor er utmerket, men du kan slippe semikolonene i den versjonen du ' har vist ovenfor, så vel som kommandoer utføres i rekkefølge i skriptet, hver på sin egen linje. Semikolonet er overflødig med mindre du legger alle kommandoene på en linje.

Svar

Ja, du er gjør det på riktig måte. Shell-skript kjører hver kommando sekvensielt og venter på at den første skal fullføres før den neste starter. Du kan enten bli med kommandoer med ; eller ha dem på separate linjer :

command1; command2 

eller

command1 command2 

Det er ikke behov for ; hvis kommandoene er på separate linjer. Du kan også velge å kjøre den andre kommandoen bare hvis den første avsluttet. For å gjøre det, bli med dem med && :

command1 && command2 

eller

command1 && command2 

For mer informasjon om de forskjellige kontrolloperatørene som er tilgjengelige for deg, se her .

Kommentarer

  • Husk det i stedet for &&, OP kan ganske enkelt legge til set -e i begynnelsen av skriptet. Dette er selvfølgelig ikke en prosesskjedende operatør.
  • @didierc som vil føre til at skriptet avsluttes ved eventuelle feil, og vil også produsere mange unødvendige fremdriftsrapporter. Ikke det samme som å koble to spesifikke kommandoer til &&.
  • @polemon egentlig ikke, nei. Dette er et veldig enkelt spørsmål fra en nybegynnerbruker. Jeg ser ikke ' mye poeng i å legge for mange detaljer. Merk at jeg ikke ' ikke engang nevnte ||. Jeg ser ikke ' t hvorfor wait er relevant her, det er absolutt ikke nødvendig for den enkle oppgaven å kjøre den ene kommandoen etter den andre. Det ville bare være behov for mer finkornet kontroll av prosesser. Send gjerne inn et svar selvfølgelig, men jeg ' vil heller holde meg enkel.
  • @terdon ville ikke ' t som er set -v eller set -x i stedet for set -e?
  • @didierc se kommentaren min ovenfor, jeg tenkte på set -x, beklager.

Svar

I et repeterende tilfelle som dette anbefalte jeg å bruke en for loop .

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

Dette er en linjeversjon som passer for kommandolinjen, men kan også brukes i et skript. Bøylene rundt variabelnavnet er nødvendig når du legger inn en variabel i en streng uten hvitt mellomrom.

Sløyfen sender ikke bare forespørslene i rekkefølge, men er lettere å tilpasse og gjenbruke når det er nødvendig, uten så mange bekymringer om skrivefeil.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *