BASH-programmering

Hur man använder $ IFS i Bash?

Hur man använder $ IFS i Bash?
I skript måste vi bryta strängdata av olika skäl. Split är en integrerad funktion på många datorspråk som delar upp varje datasträng i olika delar. Men bash saknar en inbyggd funktion för att dela en sträng. För att bryta alla strängvärden finns det många enkla och sammansatta avgränsare att använda. En variabel IFS (Internal Field Separator) används för att ange en viss avgränsare för strängdelning. I den här guiden lär du dig hur man använder olika metoder för att illustrera processen att bryta ett strängvärde i bash med $ IFS.

Förutsättningar

Se till att du har det Linux-baserade systemet installerat och konfigurerat. Vi kommer att arbeta med Ubuntu 20.04 Linux-system. Logga in från din Ubuntu-kontoanvändare för att börja arbeta med IFS. Det blir bättre om du loggar in från ditt root-användarkonto. Efter inloggning startar du kommandoradsterminalen i ditt system från Aktivitetsområdet.

Exempel 01: IFS dela en sträng med hjälp av mellanslag som värde

För vårt första exempel kommer vi att förstå konceptet att dela en sträng i bash medan vi använder mellanslag som ett avgränsningsvärde med IFS-variabeln. Först måste vi skapa en bash-fil i vårt system. Vi kan skapa nya filer i vårt Linux-system med kommandot 'touch'. Som visas nedan har vi skapat en bash-fil 'file1.sh 'med instruktionen' touch ':

$ touch-fil 1.sh

Öppna hemkatalogen för ditt Linux-system med mappikonen som visas i det vänstra hörnet av din Ubuntu 20.04 skrivbord. Du hittar din nyskapade bash-fil “file1.sh ”i den. Öppna filen “file1.sh ”och skriv skriptet nedan. Först har vi definierat en sträng med namnet “str” med något strängvärde i. Därefter definierar vi en avgränsningsvariabel IFS som en variabel med utrymme som sitt värde. Efter det använde vi läsuttalandet för att spara och läsa delad data i en array "strarr" med "-a" -flaggan. Ett "eko" -uttalande används för att skriva ut en rad med sträng tillsammans med antalet totala ord i en matris med "$ # strarr [*]". "For" -slingan används för att skriva ut värdena för en matris i delad form med variabeln "var". Omvänd snedstreck "\ n" hade använts inom utskriftsraden tillsammans med variabeln "var" för att ge ett delat avbrott på en rad efter varje värde i matrisen. Spara skriptet med hjälp av "Ctrl + S" -tangenten och stäng filen för att gå vidare.

Kom tillbaka till terminalsidan. Nu kommer vi att kontrollera utdata från ovanstående kod. För detta kommer vi att använda kommandot 'bash' tillsammans med namnet på en fil 'file1.sh ”för att utföra det som visas nedan. Först visade den raden som nämns i ”echo” uttalandet tillsammans med antalet ord i en matris. Därefter visade det alla värden i matrisen med hjälp av "for" -slingan delad av IFS.

$ bash-fil 1.sh

Exempel 02: IFS dela en sträng med hjälp av tecken som värde

I det ovannämnda exemplet har du sett hur man delar upp strängvariabler i delar medan du använder utrymme som en avgränsare för IFS. Nu använder vi ett tecken för att dela en sträng med en IFS-avgränsare. Öppna din kommandoterminal och skapa en ny bash-fil “file2.sh "i din hemkatalog för Linux-systemet med kommandot" touch "enligt följande:

$ touch-fil2.sh

Öppna hemkatalogen för ditt Linux-system. Du hittar din nyskapade fil i den. Öppna din nyskapade fil och skriv baskoden nedan. På rad 3 har vi initierat ett “echo” uttalande för att skriva ut en rad. Nästa rad läser inmatningen från en användare i en terminal med hjälp av "läs" nyckelordet. Därefter definierade vi "IFS" avgränsare och ställde komma "," som dess karaktärsvärde. Ett annat "läs" -uttalande har specificerats för att läsa och spara kommadelningsvärdena för en sträng som matas in av en användare till en array "strarr". Äntligen har vi initierat tre ekosatser för att skriva ut de kommaseparerade delade värdena som variabler som visas i bilden. Spara och stäng den här filen.

Nu måste vi köra den sparade filen. Kör det nedan visade bash-kommandot följt av namnet på en fil i en terminal för att göra det. Du måste lägga till något strängvärde som måste innehålla kommatecken "," inom värdena och trycka på Enter-knappen. Nu har dina data sparats i en array "strarr". De sista tre raderna visar resultatet av "echo" uttalanden. Du kan se, varje text före och efter kommatecken har använts som ett separat värde.

$ bash-fil2.sh

Exempel 03: IFS delad sträng

Vi har gjort båda tidigare exemplen i en bash-fil. Vi kommer nu att få en illustration av att använda “IFS” utan att skapa en bash-fil. Öppna ditt kommandoskal för att göra det. Först måste vi skapa en sträng “var” med ett strängvärde i den. Denna sträng innehåller komma efter varje ord.

$ var = ”Hej, jag är 25 år gammal.”

Initiera sedan variabeln 'IFS' med teckenkomman som avgränsningsvärde.

$ IFS =,

Därefter använde vi "for" -slingan för att söka efter varje ord från variabeln "var" åtskild av ett IFS-avgränsningskommat och skriva ut det med "echo" -uttrycket.

$ för i i $ var
> gör
> eko [$ i]
> Klar

Du kommer att ha utdata nedan. Det visar varje ord i en strängvariabel "var" på en ny rad på grund av avgränsningskommandot "," som används som delat tecken.

Slutsats:

I den här guiden har du lärt dig en mängd olika metoder för att dela in ingångsvärdena i en bash, e.g., med utrymme eller med en karaktär. Vi hoppas att illustrationerna som nämns i denna handledning hjälper dig att bryta varje sträng med IFS-avgränsaren.

Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...