Programare BASH

Cum se folosește $ IFS în Bash?

Cum se folosește $ IFS în Bash?
În scripting, trebuie să rupem datele șirului din mai multe motive. Split este o caracteristică integrată în multe limbaje de computer care împarte fiecare șir de date în diferite bucăți. Cu toate acestea, bash nu are o caracteristică încorporată pentru împărțirea unui șir. Pentru a sparge orice valoare a șirului, trebuie folosiți mulți delimitatori simpli și compuși. O variabilă IFS (Internal Field Separator) este utilizată pentru a specifica un anumit delimitator pentru divizarea șirurilor. În acest ghid, veți învăța cum să utilizați diferite metode pentru a ilustra procesul de rupere a unei valori de șir în bash utilizând $ IFS.

Condiții prealabile

Asigurați-vă că ați instalat și configurat sistemul bazat pe Linux. Vom lucra la Ubuntu 20.04 Sistem Linux. Conectați-vă de la utilizatorul contului dvs. Ubuntu pentru a începe să lucrați la IFS. Va fi mai bine dacă vă conectați din contul dvs. de utilizator root. După conectare, lansați terminalul din linia de comandă din sistemul dvs. din zona Activitate.

Exemplul 01: IFS împarte un șir folosind spațiul ca valoare

Pentru primul nostru exemplu, vom înțelege conceptul de a împărți un șir în bash în timp ce folosim spațiul ca valoare delimitatoare folosind variabila IFS. În primul rând, trebuie să creăm un fișier bash în sistemul nostru. Putem crea fișiere noi în sistemul nostru Linux folosind comanda „atingere”. După cum se arată mai jos, am creat un fișier bash 'file1.sh 'folosind instrucțiunea' atingere ':

$ touch file1.SH

Deschideți directorul Acasă al sistemului Linux folosind pictograma dosar afișată în colțul din stânga al Ubuntu 20.04 desktop. Veți găsi fișierul bash nou creat „file1.sh ”în el. Deschideți fișierul „file1.sh ”și tastați scriptul de mai jos. În primul rând, am definit un șir numit „str” cu o valoare de șir în el. Apoi, definim o variabilă delimitator IFS ca o variabilă având spațiu ca valoare. După aceea, am folosit declarația read pentru a salva și a citi datele împărțite într-o matrice „strarr” folosind steagul „-a”. O declarație „ecou” este utilizată pentru a imprima o linie de șir împreună cu numărul de cuvinte totale ale unui tablou folosind „$ # strarr [*]”. Bucla „pentru” este utilizată pentru a imprima valorile unui tablou în formă divizată utilizând variabila „var”. Backslash-ul „\ n” a fost folosit în linia de imprimare împreună cu variabila „var” pentru a da o pauză divizată de o linie după fiecare valoare a matricei. Salvați scriptul folosind tasta „Ctrl + S” și închideți fișierul pentru a continua mai departe.

Reveniți la partea terminală. Acum, vom verifica ieșirea codului de mai sus. Pentru aceasta, vom folosi comanda „bash” împreună cu numele fișierului „file1.sh ”pentru a-l executa, care este prezentat mai jos. În primul rând, a afișat linia menționată în declarația „ecou” împreună cu numărul de cuvinte ale unui tablou. După aceea, a afișat toate valorile matricei folosind bucla „pentru” împărțită de IFS.

$ bash file1.SH

Exemplul 02: IFS împarte un șir folosind caracterul ca valoare

În exemplul menționat mai sus, ați văzut cum să împărțiți variabilele șirului în părți în timp ce utilizați spațiul ca delimitator al IFS. Acum, vom folosi un caracter pentru a împărți un șir folosind un delimitator IFS. Deschideți terminalul de comandă și creați un nou fișier bash „file2.sh ”în directorul de acasă al sistemului Linux utilizând comanda„ touch ”după cum urmează:

$ touch file2.SH

Deschideți directorul principal al sistemului Linux. Veți găsi fișierul nou creat în el. Deschideți fișierul nou creat și scrieți codul bash prezentat mai jos. Pe linia 3, am inițiat o declarație „ecou” pentru a imprima o linie. Următorul rând citește intrarea dată de un utilizator într-un terminal folosind cuvântul cheie „citit”. Apoi, am definit delimitatorul „IFS” și am setat virgula „,” ca valoare a caracterului său. O altă declarație „citit” a fost specificată pentru a citi și a salva valorile divizate de virgule ale unui șir care este introdus de un utilizator într-o matrice „strarr”. În cele din urmă, am inițiat trei declarații de ecou pentru a imprima valorile divizate separate prin virgule ca variabile așa cum se arată în imagine. Salvați și închideți acest fișier.

Acum, trebuie să executăm acest fișier salvat. Executați comanda bash afișată mai jos urmată de numele unui fișier dintr-un terminal pentru a face acest lucru. Trebuie să adăugați câteva valori de șir care trebuie să conțină virgula „,” în cadrul valorilor și să apăsați butonul Enter. Acum datele dvs. au fost salvate într-o matrice „strarr”. Ultimele trei rânduri arată rezultatul declarațiilor „ecou”. Puteți vedea, fiecare text înainte și după virgulă a fost folosit ca valoare separată.

$ bash fișier2.SH

Exemplul 03: IFS Split String

Am făcut ambele exemple anterioare într-un fișier bash. Vom avea acum o ilustrare a utilizării „IFS” fără a crea un fișier bash. Deschideți shell-ul de comandă pentru a face acest lucru. Mai întâi, trebuie să creăm un șir „var” cu o valoare de șir în el. Acest șir conține virgule după fiecare cuvânt.

$ var = ”Bună, eu am, 25, ani, vârstă.”

Apoi, inițializați variabila „IFS” cu virgula caracter ca valoare delimitator.

$ IFS =,

După aceea, am folosit bucla „pentru” pentru a căuta fiecare cuvânt din variabila „var” separată printr-o virgulă de delimitare IFS și pentru a o imprima folosind instrucțiunea „echo”.

$ pentru i în $ var
> face
> ecou [$ i]
> Gata

Veți avea rezultatul de mai jos. Va afișa fiecare cuvânt al unei variabile de șir „var” la o nouă linie din cauza virgulei delimitatoare „,” folosită ca caracter divizat.

Concluzie:

În acest ghid, ați învățat o varietate de metode pentru a împărți valorile de intrare într-un bash, e.g., cu spațiu sau cu un personaj. Sperăm că ilustrațiile menționate în acest ghid tutorial vă vor ajuta să spargeți fiecare șir folosind delimitatorul IFS.

Cum se arată FPS Counter în jocurile Linux
Jocurile cu Linux au primit un impuls major când Valve a anunțat suportul Linux pentru clientul Steam și jocurile acestora în 2012. De atunci, multe j...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...