Looping gjennom innholdet av en fil i Bash
Ofte det er et krav for å lese hver av linjen fra en fil ved hjelp av et bash-script. Det finnes ulike tilnærminger til å lese linjer form av en fil. I eksempelet nedenfor har vi først beskrevet hvordan å opprette et eksempel på en fil, og deretter kjøre et skript som leser som eksempel fil.
Opprette en fil for å Lese
# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt
å Kjøre koden ovenfor gir oss følgende resultat −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
ved Hjelp av Gjør-Mens
I denne tilnærmingen vi bruke en do-while-løkke for å lese en fil., Vi gir filen et navn som en inngang på slutten av filen. Først skal vi lage script og gi tillatelse til å utføre det. Da er det bare kan lese filen og vise resultatet.
#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt
å Kjøre koden ovenfor gir oss følgende resultat −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
ved Hjelp av for og i
I neste tilnærming vi bruker en for-løkke sammen med de i pkt. Her lagrer vi resultatet av cat-kommandoen (som er hver linje) i en variabel som er en del av for-løkke og echo variabelen.,
#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done
å Kjøre koden ovenfor gir oss følgende resultat −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Med bare echo
Vi kan også få innholdet av filen ved å bruke bare ekko. Men resultatet vil komme ut som en rekke linjer og skrives ut som én linje utgang viser kombinasjonen av alle linjer.
echo $( < a_file.txt )
å Kjøre koden ovenfor gir oss følgende resultat:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
Lese-Fil med Tomme Linjer
Hvis en fil har noen linjer som er blanke, så vi ca unngå dem i produksjonen ved hjelp av følgende kode., Dette bruker IFS (interne Feltet Skilletegn) er satt til tom streng slik at den blanke linjer er behandlet som feltet skilletegn og unngås i utgang. Forutsatt at det ikke er tomme linjer mellom 3. og 4. linje, de blanke heftelser vil ikke bli skrevet ut.
#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt
å Kjøre koden ovenfor gir oss følgende resultat −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday