BASH-programmering

Hvordan bruke $ IFS i Bash?

Hvordan bruke $ IFS i Bash?
I skripting må vi bryte strengdata av en rekke årsaker. Split er en integrert funksjon på mange dataspråk som deler hver streng med data i forskjellige biter. Imidlertid mangler bash en innebygd funksjon for å dele en streng. For å bryte en strengverdi, er det mange enkle og sammensatte avgrensere som skal brukes. En variabel IFS (Internal Field Separator) brukes til å spesifisere en bestemt skillelinje for strenginndeling. I denne guiden vil du lære hvordan du bruker forskjellige metoder for å illustrere prosessen med å bryte en strengverdi i bash ved hjelp av $ IFS.

Forutsetninger

Forsikre deg om at du har det Linux-baserte systemet installert og konfigurert. Vi skal jobbe med Ubuntu 20.04 Linux-system. Logg inn fra brukeren av Ubuntu-kontoen din for å begynne å jobbe med IFS. Det vil være bedre hvis du logger på fra rotbrukerkontoen din. Etter å ha logget på, start kommandolinjeterminalen i systemet ditt fra Aktivitetsområdet.

Eksempel 01: IFS Del en streng ved å bruke mellomrom som verdi

For vårt første eksempel vil vi forstå konseptet med å dele en streng i bash mens vi bruker mellomrom som en avgrensningsverdi ved hjelp av IFS-variabelen. Først må vi lage en bash-fil i systemet vårt. Vi kan opprette nye filer i Linux-systemet vårt ved å bruke kommandoen 'touch'. Som vist nedenfor har vi opprettet en bash-fil 'file1.sh 'ved hjelp av' touch 'instruksjonen:

$ berøringsfil 1.sh

Åpne hjemmekatalogen til Linux-systemet ditt ved hjelp av mappeikonet som vises i venstre hjørne av Ubuntu 20.04 desktop. Du finner den nyopprettede bash-filen “file1.sh ”i den. Åpne filen “file1.sh ”og skriv inn skriptet nedenfor. Først har vi definert en streng som heter "str" ​​med noe strengverdi i den. Deretter definerer vi en avgrensningsvariabel IFS som en variabel som har mellomrom som sin verdi. Etter det brukte vi leseuttalelsen til å lagre og lese delte data i en matrise "strarr" ved hjelp av "-a" -flagget. Et "ekko" -uttrykk brukes til å skrive ut en strenglinje sammen med antall totale ord i en matrise ved å bruke "$ # strarr [*]". "For" -sløyfen brukes til å skrive ut verdiene til en matrise i delt form ved hjelp av variabelen "var". Omvendt skråstrek "\ n" hadde blitt brukt innenfor utskriftslinjen sammen med variabelen "var" for å gi en delt pause på en linje etter hver verdi i matrisen. Lagre skriptet ved hjelp av "Ctrl + S" -tasten og lukk filen for å fortsette videre.

Kom tilbake til terminalsiden. Nå vil vi sjekke utgangen av ovennevnte kode. For dette vil vi bruke kommandoen 'bash' sammen med navnet på filen "file1.sh ”for å utføre det som er vist nedenfor. Først viste den linjen nevnt i "ekko" -uttalelsen sammen med antall ord i en matrise. Etter det viste den alle verdiene i matrisen ved hjelp av "for" -sløyfen delt av IFS.

$ bash-fil 1.sh

Eksempel 02: IFS Del en streng ved å bruke tegn som verdi

I det ovennevnte eksemplet har du sett hvordan du kan dele strengvariabler i deler mens du bruker mellomrom som avgrenser for IFS. Nå vil vi bruke et tegn til å dele en streng ved hjelp av en IFS-skilletegn. Åpne kommandoterminalen din og opprett en ny bash-fil “file2.sh ”i hjemmekatalogen til Linux-systemet ved å bruke kommandoen“ touch ”som følger:

$ touch file2.sh

Åpne hjemmekatalogen til Linux-systemet ditt. Du finner den nylig opprettede filen i den. Åpne den nyopprettede filen og skriv baskoden nedenfor. På linje 3 har vi startet et "ekko" -uttalelse for å skrive ut en linje. Den neste linjen leser inngangen som er gitt av en bruker i en terminal ved hjelp av "lese" nøkkelordet. Deretter definerte vi "IFS" avgrenseren og satte komma "," som karakterverdien. En annen "lese" -uttalelse er spesifisert for å lese og lagre kommaverdelingsverdiene til en streng som blir lagt inn av en bruker til en array "strarr". Til slutt har vi startet tre ekkosetninger for å skrive ut de kommaseparerte delte verdiene som variabler som vist på bildet. Lagre og lukk denne filen.

Nå må vi utføre denne lagrede filen. Utfør den nedenfor viste bash-kommandoen etterfulgt av navnet på en fil i en terminal for å gjøre det. Du må legge til noen strengverdier som må inneholde komma "," i verdiene, og trykke Enter-knappen. Nå er dataene dine lagret i en serie "strarr". De tre siste linjene viser utdataene fra "ekko" -uttalelsene. Du kan se, hver tekst før og etter kommaet har blitt brukt som en egen verdi.

$ bash fil2.sh

Eksempel 03: IFS delt streng

Vi har gjort begge tidligere eksempler i en bash-fil. Vi vil nå ha en illustrasjon av bruk av “IFS” uten å lage en bash-fil. Åpne kommandoskallet for å gjøre det. Først må vi lage en streng “var” med en strengverdi i. Denne strengen inneholder komma etter hvert ord.

$ var = ”Hei, jeg er 25 år gammel.”

Initier deretter "IFS" -variabelen med tegn komma som skilletegn.

$ IFS =,

Etter det brukte vi "for" -sløyfen for å søke i hvert ord fra variabelen "var" atskilt med et IFS-skilletegn og skrive det ut med "ekko-setningen".

$ for i i $ var
> gjør
> ekko [$ i]
> Ferdig

Du får utdataene nedenfor. Det vil vise hvert ord i en strengvariabel "var" på en ny linje på grunn av skilletegn "," brukt som delt tegn.

Konklusjon:

I denne guiden har du lært en rekke metoder for å dele inngangsverdiene i en bash, e.g., med plass eller med et tegn. Vi håper at illustrasjonene nevnt i denne opplæringsveiledningen vil hjelpe deg med å bryte hver streng ved hjelp av IFS-avgrenseren.

Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...
Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...
Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...