Shell Scripting - For Loops
Innehållsförteckning:
- Standard Bash For Loop
- Slinga över strängar
- Slinga över ett nummerintervall
- Slinga över arrayelement
- C-stil Bash för loop
- Bryt och fortsätt uttalanden
- Break uttalande
- Fortsätt uttalandet
- Exempel på bas
- Byt namn på filer med mellanslag i filnamnet
- Ändrar filändelsen
- Slutsats
Loops är ett av de grundläggande begreppen för programmeringsspråk. Loops är praktiska när du vill köra en serie kommandon om och om igen tills ett visst villkor har uppnåtts.
I skriptspråk som Bash är slingor användbara för att automatisera upprepade uppgifter.
Det finns tre grundläggande slingkonstruktioner i Bash-skript, för loop, medan loop och tills loop.
I den här tutorialen kommer vi att täcka grunderna för slingor i Bash. Vi kommer också att visa dig hur du använder pausen och fortsätter uttalanden för att ändra flödet i en slinga.
Standard Bash For Loop
For-loopen iterates över en lista med objekt och utför den angivna uppsättningen kommandon.
Bash for loop har följande form:
for item in do done
Listan kan vara en serie strängar separerade med mellanslag, ett antal nummer, utgång från ett kommando, en matris och så vidare.
Slinga över strängar
I exemplet nedan kommer loopen att iterera över varje objekt i listan över strängar, och det variabla
element
kommer att ställas in på det aktuella objektet.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
Loopen kommer att producera följande utgång:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
Slinga över ett nummerintervall
Du kan använda sekvensuttrycket för att ange ett intervall med siffror eller tecken genom att definiera en start och slutpunkt för intervallet. Sekvensuttrycket har följande form:
{START..END}
I exemplet nedan kommer slingan att iterera igenom alla siffror från 0 till 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
Från Bash 4 är det också möjligt att ange ett steg när man använder intervall. Uttrycket har följande form:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
Slinga över arrayelement
Du kan också använda for-loopen för att iterera över en rad element:
I exemplet nedan definierar vi en matris
BOOKS
och itererar över varje element i matrisen.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
C-stil Bash för loop
Syntaxen för C-stil för loop har följande form:
for ((INITIALIZATION; TEST; STEP)) do done
INITIALIZATION
delen körs endast en gång när slingan startar. Därefter utvärderas
TEST
delen. Om det är falskt avslutas for-loopen. Om
TEST
är sant, utförs kommandon i kroppen för for loop och
STEP
delen uppdateras.
I följande kod, stjärnor slingan genom att initialisera
i = 0
, sedan innan varje iteration kontrollerar om
i ≤ 10
. Om det är sant skriver det det aktuella värdet på
i
och
i
med 1 (
i++
) annars slutar slingan.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
Slingan itereras 1001 gånger och ger följande utgång:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
Bryt och fortsätt uttalanden
Säkerheterna om brytning och fortsättning kan användas för att kontrollera körningen för slingan.
Break uttalande
Avbrottmeddelandet avslutar den aktuella slingan och överför programkontrollen till uttalandet som följer det avslutade uttalandet. Det används vanligtvis för att avsluta slingan när ett visst villkor är uppfyllt.
I följande exempel använder vi if-satsen för att avsluta exekveringen av slingan när det aktuella itererade objektet är lika med 'litium'.
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
Fortsätt uttalandet
Fortsättningsförklaringen lämnar den aktuella iterationen av en slinga och överför programstyrning till nästa iteration av slingan.
I följande exempel uppdateras vi genom ett antal siffror och när det aktuella itererade objektet är lika med '2' fortsätter uttalandet att exekveringen återgår till början av slingan och fortsätter med nästa iteration.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Exempel på bas
Byt namn på filer med mellanslag i filnamnet
Följande exempel visar hur man använder Bash för loop för att byta namn på alla filer i den aktuella katalogen med ett mellanslag i dess namn genom att ersätta mellanslag till understruk.
for file in *\ *; do mv "$file" "${file// /_}" done
Låt oss dela upp koden rad för rad:
- Den första raden skapar en for loop och iterates genom en lista över alla filer med ett mellanslag i dess namn. Uttrycket
*\ *skapar listan. Den andra raden gäller för varje objekt i listan och flyttar filen till en ny och ersätter utrymmet med en understreck (_). Delen${file// /_}använder skalparameterutvidgningen för att ersätta ett mönster inom en parameter med en sträng.doneindikerar slutet på loop-segmentet.
Ändrar filändelsen
Följande exempel visar hur man använder Bash för loop för att byta namn på alla filer som slutar med.jpeg i den aktuella katalogen genom att ersätta filändelsen från.jpeg till.jpg.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
Låt oss analysera koden rad för rad:
- Den första raden skapar en för-loop och iterates genom en lista över alla filer som slutar med '.jpeg'. Den andra raden gäller för varje objekt i listan och flyttar filen till en ny som ersätter '.jpeg' med '.jpg'.
${file%.jpeg}att ta bort ".jpeg" -delen från filnamnet med hjälp av skalparameterutvidgningen indikerar slutet på loop-segmentet.
Slutsats
Nu bör du ha en god förståelse för hur du använder bash för loop för att iterera genom listor.
bash loop terminalKommer affärsmodellen för mobila tjänster att fungera för bärbara datorer? AT & T verkar tänka så. Den trådlösa leverantören erbjuder subventionerade netbooks för så lite som $ 49,99 på två marknader, Atlanta och Philadelphia. Fångsten är att köpare måste skriva ett tvåårigt kontrakt för en AT & T datatjänstplan, som börjar på ungefär 60 kronor per månad. Som vanligt är djävulen i detalj, och dessa billiga nätböcker, trots sitt frestande pris, är kanske inte ett bra köp för alla.
AT & T säger att erbjudandet är "reklam", vilket tyder på att det kan öka hårdvarupriserna eller till och med släppa netbook-försäljningen helt och hållet om experiment inte fungerar. Och eftersom det lanseras planen på bara två marknader verkar företaget vara att testa vattnet här. Förflyttningen är meningsfullt; subventionerade nätböcker ger låga intäkter för konsumenterna, och de drar nya användare till leverantörernas växande höghastighetsnät.
Som medordförande för medlemskap för EO Houston deltog jag nyligen i vår globala ledarskapskonferens i New Orleans, som är ett årligt toppmöte för EO-styrelsemedlemmar från både Nord- och Sydamerika. Steve Jagger, grundare och vd för Ubertor (och flera andra företag) talade om en virtualisering och decentralisering av ditt företag med hjälp av ny teknik för att hantera informationen. I sitt samtal täckte Steve flera skäl att hans företag outsourcer / off-shores / automatiserar allt de kan. Och &
Så som mitt företags (www.entrancesoftware.com) leasing i dyrt downtown Houston (Google Map: 1001 McKinney St. Houston, TX 77002) kommer upp för omförhandling på 6 månader eller så, jag har börjat tänka på det här allvarligare ... Här är de problem som jag har mulling:
Precis som Adobe Premiere Elements är Pinnacle Studio HD ($ 50 per 10/5/2009) ett videoredigeringsprogram för konsumentnivå, utformat för hemvideografer. Till skillnad från Adobes applikation är Pinnacle dock mer rotad i traditionella videoredigeringsmetoder som används för att producera professionella kvalitetsfilmer. Pinnacle erbjuder djupare funktioner för import, anpassning och export som sannolikt gör det svårare för nybörjaren att lära sig och använda, men dess gratis online-handledning är
Medan det delvis redesignade gränssnittet är renare har den fortfarande de tre flikstegen som hittades i tidigare versioner, som omnämns till Importera, Redigera och Skapa film.







