BASH-programmering

Hoe $IFS te gebruiken in Bash?

Hoe $IFS te gebruiken in Bash?
Bij scripting moeten we om verschillende redenen stringgegevens breken. Splitsen is een geïntegreerde functie in veel computertalen die elke reeks gegevens in verschillende stukken verdeelt. Bash mist echter een ingebouwde functie voor het splitsen van een string. Om een ​​tekenreekswaarde te breken, zijn er veel enkele en samengestelde scheidingstekens die moeten worden gebruikt. Een variabele IFS (Internal Field Separator) wordt gebruikt om een ​​bepaald scheidingsteken op te geven voor tekenreeksdeling. In deze handleiding leert u hoe u verschillende methoden kunt gebruiken om het proces van het breken van een tekenreekswaarde in bash te illustreren met behulp van de $IFS.

Vereisten

Zorg ervoor dat het op Linux gebaseerde systeem is geïnstalleerd en geconfigureerd. We zullen werken aan Ubuntu 20.04 Linux-systeem. Log in vanaf uw Ubuntu-accountgebruiker om aan IFS te werken. Het is beter als u inlogt vanaf uw root-gebruikersaccount. Start na het inloggen de opdrachtregelterminal in uw systeem vanuit het activiteitengebied.

Voorbeeld 01: IFS splitst een string met spatie als waarde

Voor ons eerste voorbeeld zullen we het concept begrijpen van het splitsen van een string in bash terwijl we spatie gebruiken als een scheidingsteken met behulp van de IFS-variabele. Eerst moeten we een bash-bestand in ons systeem maken. We kunnen nieuwe bestanden in ons Linux-systeem maken met behulp van het 'touch'-commando. Zoals hieronder getoond, hebben we een bash-bestand 'file1' gemaakt.sh' met behulp van de 'touch'-instructie:

$ raak bestand aan1.sh

Open de hoofdmap van uw Linux-systeem met behulp van het mappictogram dat wordt weergegeven in de linkerhoek van uw Ubuntu 20.04 bureaublad. U zult uw nieuw gemaakte bash-bestand "file1" vinden.sh" erin. Open het bestand "file1".sh" en typ het onderstaande script. Eerst hebben we een tekenreeks gedefinieerd met de naam "str" ​​met een tekenreekswaarde erin. Vervolgens definiëren we een scheidingstekenvariabele IFS als een variabele met spatie als waarde. Daarna hebben we de read-instructie gebruikt om de gesplitste gegevens op te slaan en te lezen in een array "strarr" met behulp van de vlag "-a". Een 'echo'-instructie wordt gebruikt om een ​​tekenreeks samen met het aantal woorden van een array af te drukken met behulp van de "$#strarr[*]". De "for"-lus wordt gebruikt om de waarden van een array in gesplitste vorm af te drukken met behulp van de variabele "var". De backslash "\n" was gebruikt binnen de printregel samen met de variabele "var" om een ​​gesplitste onderbreking van één regel te geven na elke waarde van de array. Sla het script op met de "Ctrl+S"-toets en sluit het bestand om verder te gaan.

Kom terug naar de terminalzijde. Nu zullen we de uitvoer van de bovenstaande code controleren:. Hiervoor gebruiken we het 'bash'-commando samen met de naam van een bestand "file1".sh" om het uit te voeren, wat hieronder wordt getoond. Ten eerste werd de regel weergegeven die wordt genoemd in de "echo" -instructie samen met het aantal woorden van een array. Daarna werden alle waarden van de array weergegeven met behulp van de "for"-lus die is opgesplitst door IFS.

$ bash-bestand1.sh

Voorbeeld 02: IFS Splits een tekenreeks met teken als waarde

In het bovengenoemde voorbeeld hebt u gezien hoe u tekenreeksvariabelen in delen kunt splitsen terwijl u spatie gebruikt als scheidingsteken van IFS. Nu gaan we een teken gebruiken om een ​​string te splitsen met een IFS-scheidingsteken. Open uw opdrachtterminal en maak een nieuw bash-bestand "file2".sh" in uw homedirectory van het Linux-systeem met behulp van de "touch"-opdracht als volgt:

$ raak bestand aan2.sh

Open de homedirectory van uw Linux-systeem. Je zult je nieuw aangemaakte bestand erin vinden. Open je nieuw gemaakte bestand en schrijf de hieronder gepresenteerde bash-code. Op regel 3 hebben we een "echo" -instructie gestart om een ​​regel af te drukken. De volgende regel leest de invoer die door een gebruiker in een terminal is gegeven met het trefwoord "lezen"read. Vervolgens hebben we het scheidingsteken "IFS" gedefinieerd en de komma "," als tekenwaarde ingesteld. Er is een andere "read" -instructie opgegeven om de komma-gesplitste waarden van een tekenreeks die door een gebruiker is ingevoerd in een array "strarr" te lezen en op te slaan. Eindelijk hebben we drie echo-instructies geïnitieerd om de door komma's gescheiden gesplitste waarden als variabelen af ​​te drukken, zoals weergegeven in de afbeelding. Bewaar en sluit dit bestand.

Nu moeten we dit opgeslagen bestand uitvoeren. Voer hiervoor het onderstaande bash-commando uit gevolgd door de naam van een bestand in een terminal. U moet een tekenreekswaarde toevoegen die een komma "," moet bevatten binnen waarden, en op de Enter-knop drukken. Nu zijn uw gegevens opgeslagen in een array "strarr". De laatste drie regels tonen de uitvoer van de "echo" -statements. U kunt zien dat elke tekst voor en na de komma als een afzonderlijke waarde is gebruikt.

$ bash-bestand2.sh

Voorbeeld 03: IFS Split String

We hebben beide eerdere voorbeelden in een bash-bestand gedaan. We hebben nu een illustratie van het gebruik van "IFS" zonder een bash-bestand te maken. Open hiervoor uw opdrachtshell. Eerst moeten we een tekenreeks "var" maken met een tekenreekswaarde erin. Deze string bevat komma's na elk woord.

$ var="Hallo, ik, ben, 25, jaar oud.”

Initialiseer vervolgens de 'IFS'-variabele met de tekenkomma als scheidingsteken.

$ IFS=,

Daarna hebben we de "for"-lus gebruikt om elk woord van de variabele "var" te zoeken, gescheiden door een IFS-scheidingsteken door komma's en dit af te drukken met behulp van de "echo" -instructie.

$ voor ik in $var
>doen
>echo [$i]
>Gereed

Je hebt de output hieronder:. Het toont elk woord van een tekenreeksvariabele "var" op een nieuwe regel vanwege de scheidingskomma "", gebruikt als een gesplitst teken.

Conclusie:

In deze handleiding hebt u verschillende methoden geleerd om de invoerwaarden in een bash te splitsen, bijv.g., met spatie of met een teken. We hopen dat de illustraties die in deze zelfstudiegids worden genoemd, u zullen helpen elke tekenreeks te doorbreken met behulp van het IFS-scheidingsteken.

Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...
OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...
OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creëren. U begint e...