A Bash egy népszerű shell-szkriptnyelv, amelyet Linux és Unix operációs rendszerekben használnak. Parancsok és funkciók gazdag készletét kínálja, amelyek megkönnyítik az ismétlődő feladatok automatizálását. A „readarray” az egyik leghasznosabb parancs a Bashban. Ezzel a paranccsal egy fájl sorai 2D tömbbe olvashatók. Ebben a bejegyzésben áttekintjük, hogyan lehet sorokat olvasni egy fájlból 2D tömbbe a Bash „readarray” parancsával.
A „readarray” használata a Bashban
A „readarray” parancs beolvassa a sorokat egy fájlból vagy szabványos bemenetből, és hozzárendeli azokat egy tömbhöz. A „readarray” használatának szintaxisa a következő:
readarray [ -d MEGOSZTÁS ] [ -n COUNT ] [ - AZ EREDET ] [ -s COUNT ] [ -t ] sor
A „readarray” parancshoz a következő lehetőségek állnak rendelkezésre:
'-d MEGOSZTÁS': Beállítja a vonalak tömbelemekre való felosztásához használandó határolót, és alapértelmezés szerint a határoló egy újsor karakter.
„-n COUNT”: Megadja a tömbbe beolvasandó sorok maximális számát.
'-O EREDET' : Beállítja a tömb kezdő indexét.
„-s COUNT”: Meghatározza a kihagyandó sorok számát a tömbbe való beolvasás előtt.
'-t': Eltávolítja a tömbbe beolvasott minden sorból a záró újsor karaktert.
Íme egy példa a „readarray” használatára egy fájl sorainak 2D-s tömbbe történő olvasására, és ehhez létrehoztam egy tesztfájl.txt melynek tartalma:
1 2 34 5 6
7 8 9
Tehát itt van a teljes bash szkript, amely bemutatja a „readarray” parancs használatát:
# Sorok beolvasása egy fájlból a tömbbe
readarray -t vonalak < tesztfájl.txt
# Deklaráljon egy 2D tömböt 3 sorból és 3 oszlopból
kijelent -A sor
# Ismételje meg a sorokat, és ossza fel az egyes sorokat elemekre
számára én ban ben ' ${!lines[@]} ' ; csináld
IFS = '' olvas -r -a elemeket <<< ' ${lines[i]} '
számára j ban ben ' ${!elements[@]} ' ; csináld
ha [ [ -n ' ${elements[j]} ' ] ] ; akkor
sor [ $i , $j ] = ${elements[j]}
lenni
Kész
Kész
# Nyomtassa ki a tömböt
számára ( ( én = 0 ;én < 3 ;i++ ) ) ; csináld
számára ( ( j = 0 ;j < 3 ;j++ ) ) ; csináld
visszhang -n ' ${array[$i,$j]} '
Kész
visszhang
Kész
Itt először deklaráltam egy „tömb” nevű 2D tömböt, majd a „readarray” paranccsal beolvastam a sorokat a „testfile.txt” nevű fájlból a „vonalak” tömbbe. Ezután a kód a „vonalak” tömbön keresztül iterál, és az „IFS” és „read” parancsok segítségével minden sort elemre oszt.
Ezt követően eltárolja az elemeket a 2D tömb „tömbjében”, majd a read paranccsal az egyes sorokat elemekre bontja. Most minden elem hozzá van rendelve a megfelelő elemhez a „tömb” tömbben, és végül a „tömb” tömb tartalma beágyazott ciklusokhoz kerül kinyomtatásra.
Következtetés
A „readarray” parancs megkönnyíti a Bash-szkriptekben nagy mennyiségű adat kezelését. Az ebben a cikkben található példák követésével elkezdheti használni a „readarray”-t saját Bash-szkriptjeiben, hogy sorokat olvasson ki fájlokból és dolgozzon fel 2D tömbökké.