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.