BASHi programmeerimine

Kuidas kasutada $ IFS-i Bashis?

Kuidas kasutada $ IFS-i Bashis?
Skriptimisel peame stringiandmeid mitmel põhjusel lõhkuma. Split on paljudes arvutikeeltes integreeritud funktsioon, mis jagab iga andmerea erinevateks tükkideks. Kuid bashil puudub stringi jagamiseks sisseehitatud funktsioon. Mis tahes stringiväärtuse purustamiseks tuleb kasutada palju ühe- ja liitpiirijaid. Stringijaotuse konkreetse eraldaja määramiseks kasutatakse muutujat IFS (Internal Field Separator). Selles juhendis saate teada, kuidas kasutada erinevaid meetodeid stringi väärtuse purustamise protsessi illustreerimiseks bashis $ IFS abil.

Eeldused

Veenduge, et teil oleks Linuxi-põhine süsteem installitud ja konfigureeritud. Töötame Ubuntu 20-ga.04 Linuxi süsteem. IFS-iga töötamise alustamiseks logige sisse oma Ubuntu konto kasutajalt. Parem on, kui logite sisse oma juurkasutaja kontolt. Pärast sisselogimist käivitage oma süsteemis käsureaterminal alalt Tegevus.

Näide 01: IFS jagab stringi, kasutades väärtusena tühikut

Esimese näite jaoks mõistame stringi poolitamise mõtet bashis, kasutades ruumi piiritlejana IFS-i muutujat kasutades. Esiteks peame looma oma süsteemis bashi faili. Saame oma Linuxi süsteemis luua uusi faile, kasutades käsku "touch". Nagu allpool näidatud, oleme loonud bash-faili 'file1.sh ', kasutades puutetundlikku juhist:

$ puutefail1.sh

Avage oma Linuxi süsteemi kodukataloog, kasutades kaustaikooni, mis kuvatakse teie Ubuntu 20 vasakus nurgas.04 töölaud. Leiate oma äsja loodud bashi faili "file1.sh ”selles. Avage fail „file1.sh ”ja tippige allolev skript. Esiteks oleme määranud stringi nimega “str”, milles on mingi stringi väärtus. Seejärel määratleme piiritleja muutuja IFS muutujana, mille väärtus on ruum. Pärast seda kasutasime loetud lauset, et salvestada jagatud andmed massiivi "strarr" abil, kasutades lippu "-a". Lause 'echo' abil trükitakse stringirida koos massiivi sõnade koguarvuga „$ # strarr [*]” abil. Silmust “for” kasutatakse massiivi väärtuste printimiseks jagatud kujul, kasutades muutujat “var”. Tagurpidi kaldkriipsu "\ n" kasutati trükireas koos muutujaga "var", et anda massiivi iga väärtuse järel ühe rea pikkune katkestus. Salvestage skript klahviga “Ctrl + S” ja sulgege fail, et jätkata.

Tule tagasi terminali poole. Nüüd kontrollime ülaltoodud koodi väljundit. Selleks kasutame käsku "bash" koos faili nimega "fail1".sh ”selle täitmiseks, mis on näidatud allpool. Esiteks kuvati selles kajas mainitud rida koos massiivi sõnade arvuga. Pärast seda kuvas see massiivi kõik väärtused, kasutades IFS-i poolt jagatud tsüklit “for”.

$ bashi fail1.sh

Näide 02: IFS jagab stringi, kasutades väärtuseks märki

Ülalmainitud näites olete näinud, kuidas stringimuutujaid osadeks jagada, kasutades IFS-i eraldajana ruumi. Nüüd kasutame IFS-i eraldaja abil stringi jagamiseks märki. Avage käsuterminal ja looge uus bashi fail „file2.sh ”oma Linuxi süsteemi kodukataloogis, kasutades käsku“ touch ”järgmiselt:

$ puutefail2.sh

Avage oma Linuxi süsteemi kodukataloog. Leiate sellest oma äsja loodud faili. Avage oma äsja loodud fail ja kirjutage allpool esitatud bash-kood. 3. real oleme algatanud liini printimiseks avalduse “kaja”. Järgmine rida loeb kasutaja poolt terminalis sisestatud sisendit märksõna „read” abil. Järgmisena määratlesime eraldaja IFS ja määrasime selle tähemärgiks koma “.”. Kasutaja massiivi „strarr” sisestatava stringi komakohaga väärtuste lugemiseks ja salvestamiseks on määratud veel üks lause „loe”. Lõpuks oleme algatanud kolm kajalauset komaga eraldatud jagatud väärtuste muutujate printimiseks, nagu pildil näidatud. Salvestage ja sulgege see fail.

Nüüd peame selle salvestatud faili käivitama. Selleks käivitage allpool näidatud käsk bash, millele järgneb terminali faili nimi. Peate lisama mõne stringi väärtuse, mis peab sisaldama väärtustes koma “,” ja vajutama nuppu Enter. Nüüd on teie andmed salvestatud massiivi “strarr”. Viimased kolm rida näitavad kajalausete väljundit. Näete, et iga teksti enne ja pärast koma on kasutatud eraldi väärtusena.

fail $ bash2.sh

Näide 03: IFS-i jagatud string

Mõlemad varasemad näited oleme teinud bashi failis. Nüüd on meil näide IFS-i kasutamisest ilma bashi faili loomata. Selleks avage oma käsukest. Esiteks peame looma stringi “var”, milles on stringi väärtus. See string sisaldab komu iga sõna järel.

$ var = ”Tere, olen 25-aastane, vana.”

Seejärel lähtestage muutuja IFS piiritleja väärtuseks komaga.

$ IFS =,

Pärast seda kasutasime silmus “for”, et otsida IFS eraldaja komaga eraldatud muutujast “var” iga sõna ja printida see lause “echo” abil.

$ i i jaoks variatsioonis $
> tegema
> kaja [$ i]
> Valmis

Väljund on allpool. See näitab stringimuutuja “var” kõiki sõnu uuel real, kuna eraldusmärgina kasutatakse eralduskoma “,”.

Järeldus:

Selles juhendis olete õppinud mitmesuguseid meetodeid sisendväärtuste jagamiseks bashis, nt.g., ruumi või tähemärgiga. Loodame, et selles juhendaja juhendis mainitud illustratsioonid aitavad teil IFS eraldaja abil kõik stringid katkestada.

Installige Linuxile uusim Dolphin Emulator for Gamecube & Wii
Dolphini emulaator võimaldab teil mängida valitud Gamecube & Wii mänge Linuxi personaalarvutites (PC). Vabalt saadaval oleva ja avatud lähtekoodiga m...
Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...
Parimad Linuxi mängukonsooli emulaatorid
Selles artiklis loetletakse Linuxi jaoks saadaval olev populaarne mängukonsooli emuleerimise tarkvara. Emuleerimine on tarkvara ühilduvuse kiht, mis j...