Jak używać $ ifs w Bash?

Jak używać $ ifs w Bash?

IFS jest skrótem dla wewnętrznego separatora pola, który jest zmienną środowiskową w powładzie w celu ustalenia separatora. $ IFS określa, w jaki sposób słowa w wierszu polecenia są wyznaczone. Domyślnie separatory pola (IFS) są przestrzenią, kartą i nowością, ale możemy to zmienić w naszym skrypcie, aby pasowały do ​​wymagań. Służy głównie do pętli do manipulowania elementami na określonej liście. Używamy zmiennej $ IFS w naszym skrypcie Bash do podziału łańcucha, ponieważ Bash nie zawiera wbudowanego mechanizmu dzielenia ciągów.

Przykład 1: Bash Script bez $ IFS Operator

Rozważ następujący skrypt bash, w którym elementy są oddzielone pustą przestrzenią. Tutaj nie używamy operatora $ ifs, aby zobaczyć wyjście normalnego skryptu bash. Tworzymy „Bash.plik sh ”, a następnie otwórz go, aby napisać program, aby wydrukować ciąg na powładzie bash. Zaczynamy od deklaracji zmiennej zatytułowanej „$ mysentence” i określając tę ​​zmienną z długim ciągiem. Mamy różne słowa w ciągu, które są podzielone przez przestrzeń. Następnie wzywamy pętlę foreach, aby wydrukować każde słowo ciągu „$ mysentence”. Pętla Foreach jest ustawiona za pomocą obiektu „Mywords”, który trzyma iterowane słowo z ciągu. Następnie odzwierciedlamy iterowane słowa z łańcucha za pomocą polecenia echo, które jest rozmieszczone między instrukcją do.

#!/usr/bin/env bash
Mysentence = "Bash to skuteczne programowanie"
dla Mywords in $ mysentence
Do
echo „$ mywords”
zrobione

Otwórz terminal za pomocą klawisza skrótu „CTRL+Alt+T” i skompiluj „Bash.plik sh ”z poleceniem bash. Wyświetlane słowa w skorupce znajdują się w osobnej linii, ponieważ przestrzeń, zakładki i nowa linia są uważane za separatory pola w Bash.

$ bash ./Grzmotnąć.cii

Przykład 2: Skrypt bash z operatorem $ IFS

Oddzielamy słowa w określonym ciągu bez użycia operatora $ ifs. Możemy użyć operatora $ IFS z pożądanym znakiem. Jeśli zmienimy domyślne IFS, mądra strategia jest przechowywanie starego. Po wykonaniu wymaganych zadań możemy przekazać oryginalną postać do IFS. Zapytajmy skrypt bash, w którym operator $ IFS jest stosowany do oddzielenia słów.

Tutaj określamy ciąg jako nazwę osób, które są oddzielone postacią jelita grubego „:” wewnątrz zmiennej „osoby”. Następnie przechowujemy oryginalną wartość IFS w atrybucie „pre_ifs”. Następnie deklarujemy zmienną IFS, gdzie okrężnica „:” jest ustawiona jako ogranicznik. Zmienna IFS jest używana jako token słów, który jest używany do pętli dla. Zastosujemy pętlę foreach, aby przemierzać ciąg zmiennej „osób” w formie podzielonej i przekazywał wszystkie elementy ciągów do obiektu „Pe” pętli for-each. Następnie używamy instrukcji Echo w poleceniach do i wykonanych do wyświetlania oddzielonych ciągów.

#/bin/bash
Osoby = Alex: Thomas: Kyle: Jenny
Pre_ifs = "$ ifs"
Ifs = ":"
dla osób w $
Do
echo nazwa osób to $
zrobione

Skompiluj go z plik skryptu Bash w terminalu, aby zobaczyć wyjście za pomocą operatora IFS. Po wykonywaniu plik bash operatora IFS, oddziela każdy ciąg w następującym formacie:

Przykład 3: Skrypt bash z operatorem $ IFS do wyświetlenia nazwy użytkownika z pliku

Teraz używamy operatora $ IFS w skrypcie Bash, aby wyświetlić nazwę użytkowników z pliku „/etc/passwd”. Używamy tutaj operatora $ ifs, który oddziela każdą nazwę użytkownika w skorupce. Następujący skrypt bash rozpoczyna się od deklaracji zmiennej „IFS”, która jest ustawiona z postacią „$ '\ n' 'i okrężnicy„: ”. Znak $ '\ n' to nowa postać używana do sekwencji ucieczki. Nazwy użytkowników są oddzielone przez dostarczone IFS.

Następnie mamy zmienną „x”, której wartość przypisuje się jako „1”. Następnie używamy polecenia CAT z plikiem „/etc/passwd”, który przekazuje nazwę użytkownika do obiektu „użytkownika” pętli foreach, aby iterować wszystkich użytkowników pliku „/etc/passwd”. Polecenia „do” i „wykonane” są określone z zagnieżdżonymi instrukcjami „jeśli”, aby odzwierciedlić użytkowników.

Ifs = $ '\ n':
x = 1
dla użytkownika w „Cat /itp. /Passwd”
Do
Jeśli [$ x -eq 1]
Następnie
echo $ użytkownik
fi
Jeśli [$ x -eq 7]
Następnie
x = 1
w przeciwnym razie
x = $ ((x+1))
fi
zrobione

Wykonujemy skrypt bash na następującym ekranie terminalu, który wyświetla użytkowników „/etc/passwd” przez określony separator pola:

Przykład 4: skrypt bash-wierszu z $ IFS

IFS jest określoną zmienną powłoki, abyśmy mogli używać jej bezpośrednio w wierszu poleceń. Tutaj mamy skrót do korzystania z operatora IFS. Zamiast tworzyć osobny plik skryptu Bash, otwieramy terminal i definiujemy zmienną „IFS”. Zmienna „IFS” jest ustawiona z ograniczeniem strzępiącym „-”. Następnie odzwierciedlamy ciąg „Hello-Geeks”, który jest oddzielony przez łącznik pola Hyphen „-”. Następnie używamy polecenia odczytu do zdefiniowania zmiennych „var1” i „var2” i echo tych zmiennych osobno.

Ifs = "-"
Echo „Hello-Geeks!"| (Przeczytaj var1 var2; echo $ var1; echo $ var2)

Wyjście pobiera ciąg hello i ciąg „Geeks” osobno. Stąd $ IFS akceptuje ograniczenia indywidualnie.

Przykład 5: Rozdzielenie ciągu zdefiniowanego przez użytkownika w skrypcie Bash za pomocą IFS

Wykorzystaliśmy operatora $ IFS w poprzednim skrypcie Bash, aby zademonstrować funkcjonalność. Teraz używamy operatora IFS do ustawienia separatora dla ciągów słów zdefiniowanych przez użytkownika w terminalu. Podajemy polecenie odczytu z flagą „-p”. To polecenie drukuje instrukcję „Wprowadź ciąg z przestrzenią”. Następnie wprowadzony ciąg jest inicjowany w zmiennej „Stringis”. Operator IFS jest ustawiony na ograniczenie przestrzeni, aby podzielić struny.

Następnie mamy polecenie „Read -ra Addr”, które odczytuje „$ strinis” jako szereg tokenów, które są podzielone przez IFS. Opcja „-R” określa, że ​​„” „” nie jest postacią ucieczki, to postać. Opcja „-a” określa, że ​​słowa są oddzielone przez $ IFS przydzielone do sekwencyjnego indeksu tablicy, który zaczyna się od zera. Następnie uzyskujemy dostęp do elementów strun tablicy, przechodząc przez nią przez pętlę foreach.

#!/bin/bash
odczyt -p „Wprowadź ciąg z sparem:” Stringis
Ifs = "
Przeczytaj -ra addr <<<"$StringIS"
Dla i in „$ addr [@]”;
Do
echo „$ i”
zrobione

Ciąg wprowadzony przez użytkownika zawiera puste przestrzenie, których wykonanie jest uzyskiwane w następujący sposób:

Wniosek

Ten artykuł redakcyjny odkrył metodę oddzielenia tokena w Bash przez $ IFS poprzez wdrożenie skryptów Bash. Użyliśmy również $ ifs w wierszu polecenia, aby podzielić ciąg. Jest to bardzo prosty i krótki sposób na realizację rozdziału sznurka. Chociaż powłoka używa każdego charakteru IFS jako ogranicznika i dzieli ustalenia innych iteracji na słowa.