Kommentarer
- terdon ' s svar nedenfor er fremragende, men du kan slippe semikolonerne i den version, du ' har vist ovenfor, såvel som kommandoer udføres i rækkefølge i scriptet, hver på sin egen linje. Semikolonet er overflødigt, medmindre du sætter alle kommandoerne på en linje.
Svar
Ja, du er gør det på den rigtige måde. Shell-scripts kører hver kommando sekventielt og venter på, at den første slutter, inden den næste starter. Du kan enten slutte kommandoer med ;
eller have dem på separate linjer :
command1; command2
eller
command1 command2
Der er ikke behov for ;
hvis kommandoerne er på separate linjer. Du kan også vælge kun at køre den anden kommando, hvis den første afsluttes med succes. For at gøre det skal du slutte dem til &&
:
command1 && command2
eller
command1 && command2
For mere information om de forskellige kontroloperatører, der er tilgængelige for dig, se her .
Kommentarer
- Husk det i stedet for
&&
, OP kunne simpelthen tilføjeset -e
i begyndelsen af scriptet. Dette er selvfølgelig ikke en proceskædningsoperatør. - @dierierc, der får scriptet til at afslutte enhver fejl og vil også producere masser af unødvendige statusrapporter. Ikke det samme som at forbinde to specifikke kommandoer med
&&
. - @polemon ikke rigtig, nej. Dette er et meget simpelt spørgsmål fra en nybegynderbruger. Jeg ' ser ikke meget mening i at tilføje for mange detaljer. Bemærk, at jeg ikke ' ikke engang nævnte
||
. Jeg kan ikke ' virkelig se, hvorforwait
er relevant her, det er bestemt ikke nødvendigt for den enkle opgave at køre den ene kommando efter den anden. Det ville kun være nødvendigt for mere finkornet kontrol af processer. Du er selvfølgelig velkommen til at indsende et svar, men jeg ' vil hellere holde mig enkel. - @terdon ville ikke ' t der er
set -v
ellerset -x
snarere endset -e
? - @didierc se min kommentar ovenfor, jeg tænkte på
set -x
, undskyld.
Svar
I en gentagen sag som denne anbefalede jeg at bruge en for loop .
for P in {1..3} ; do wget -q http://exemple.com/page${P}.php ; done
Dette er en version med en linje, der passer til kommandolinjen, men kan også bruges i et script. Bøjlerne omkring variabelnavnet er nødvendige, når en variabel indlejres i en streng uden hvidt mellemrum.
Sløjfen sender ikke kun anmodningerne i rækkefølge, men er lettere at tilpasse og genbruge, når det er nødvendigt, uden så mange bekymringer om skrivefejl.