Hur kör jag många kommandon i en enda loop?
Att skriva ut filnamn är användbart vid felsökning, men det egentliga syftet med loopar är att utföra operationer på flera filer. Den här loopen skriver ut den andra raden i varje datafil:
for file in seasonal/*.csv; do head -n 2 $file | tail -n 1; done
Den har samma struktur som de andra loopar du redan sett: enda skillnaden är att loopens kropp är en pipeline med två kommandon i stället för ett enda kommando.
Den här övningen är en del av kursen
Introduktion till Shell
Övningsinstruktioner
Skriv en loop som skriver ut den sista posten från juli 2017 (2017-07) i varje säsongsfil. Den ska ge ett liknande utdata som:
grep 2017-07 seasonal/winter.csv | tail -n 1
men för varje säsongsfil separat. Använd file som namn på loopvariabeln och kom ihåg att loopa igenom fillistan seasonal/*.csv (i stället för 'seasonal/winter.csv' som i exemplet).
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen