Opakování obsahu souboru v Bash
často je to požadavek na čtení každého řádku ze souboru pomocí Bash skriptu. Existují různé přístupy ke čtení řádků tvoří soubor. V níže uvedeném příkladu jsme nejprve popsali, jak vytvořit ukázkový soubor a poté spustit skript, který čte tento ukázkový soubor.
Vytvořit soubor, Číst
# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt
spuštění výše uvedený kód nám dává následující výsledek −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Pomocí do-While
V tomto přístupu můžeme použít do-while číst soubor., Název souboru uvedeme jako vstup na konci souboru. Nejprve vytvoříme skript a udělíme mu oprávnění k provedení. Pak jen to může číst soubor a zobrazit výsledek.
#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt
spuštění výše uvedený kód nám dává následující výsledek −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Použití pro:
V další přístup, který jsme použili pro smyčce spolu s v bodě. Zde uložíme výsledek příkazu cat (což je každý řádek) do proměnné, která je součástí pro loop a echo proměnné.,
#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done
spuštění výše uvedený kód nám dává následující výsledek −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
pouze S echo
také můžeme získat obsah souboru pouze pomocí echo. Výsledek však vyjde jako řada řádků a vytiskne se jako jednořádkový výstup zobrazující kombinaci všech řádků.
echo $( < a_file.txt )
spuštění výše uvedený kód nám dává následující výsledek:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
Čtení Souboru s Prázdné Řádky
Pokud soubor se některé řádky, které jsou prázdné, pak jsme ca vyhnout se jim ve výstupu pomocí následující kód., To používá IFS (oddělovač vnitřního pole) je nastaven na prázdný řetězec, takže prázdné řádky jsou považovány za oddělovač polí a vyhýbají se výstupu. Za předpokladu, že mezi 3.a 4. řádkem jsou prázdné řádky, nebudou tato prázdná zástavní práva vytištěna.
#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt
spuštění výše uvedený kód nám dává následující výsledek −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday