Hurkolja át a tartalmát egy fájlt bash
gyakran ez a követelmény, hogy olvassa el az egyes sorok egy fájlt egy bash script. Vannak különböző megközelítések olvasni a sorok alkotnak egy fájlt. Az alábbi példában először leírtuk, hogyan lehet létrehozni egy mintafájlt, majd futtatni egy szkriptet, amely elolvassa a mintafájlt.
hozzon létre egy fájlt a
# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt
a fenti kód futtatása a következő eredményt adja nekünk −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
A Do-While
használatával ebben a megközelítésben do-while hurkot használunk egy fájl olvasásához., A fájl nevét bemenetként adjuk meg a fájl végén. Először létrehozunk egy szkriptet, majd megadjuk a végrehajtás engedélyét. Ezután csak a fájlt tudja elolvasni, majd megmutatni az eredményt.
#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt
a fenti kód futtatása a következő eredményt adja nekünk −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
a következő megközelítésben a For loop-ot használunk az in záradékkal együtt. Itt tároljuk a cat parancs eredményét (amely minden sor) egy változóban, amely része a For loop-nak, és visszhangozza a változót.,
#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done
a fenti kód futtatása a következő eredményt adja nekünk −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
csak echo
a fájl tartalmát csak echo használatával is megkaphatjuk. De az eredmény jön ki, mint egy sor sor, majd nyomtatott ki, mint egysoros kimenet mutatja kombinációja az összes sort.
echo $( < a_file.txt )
a fenti kód futtatása a következő eredményt adja:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
üres sorokkal rendelkező fájl olvasása
Ha egy fájlnak vannak üres sorai, akkor a következő kód használatával elkerülhetjük őket a kimenetben., Ez az IFS (internal Field Separator) üres karakterláncot használ, így az üres sorokat mezőelválasztóként kezelik, majd elkerülik a kimenetet. Feltételezve, hogy üres sorok vannak a 3.és a 4. sor között, ezek az üres zálogjogok nem lesznek kinyomtatva.
#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt
a fenti kód ad nekünk a következő eredmény −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday