Програмиране на BASH

Как да използвам $ IFS в Bash?

Как да използвам $ IFS в Bash?
При скриптове трябва да прекъсваме данните от низове по различни причини. Разделянето е интегрирана функция в много компютърни езици, която разделя всеки низ от данни на различни части. На bash обаче липсва вградена функция за разделяне на низ. За да се прекъсне която и да е низова стойност, трябва да се използват много единични и съставни разделители. Променлива IFS (Internal Field Separator) се използва за задаване на определен разделител за разделяне на низове. В това ръководство ще научите как да използвате различни методи за илюстриране на процеса на разбиване на низова стойност в bash с помощта на $ IFS.

Предпоставки

Уверете се, че имате инсталирана и конфигурирана Linux-базирана система. Ще работим върху Ubuntu 20.04 Linux система. Влезте от потребителя на вашия акаунт в Ubuntu, за да започнете да работите върху IFS. Ще бъде по-добре, ако влезете от основния си потребителски акаунт. След като влезете, стартирайте терминала на командния ред във вашата система от зоната Activity.

Пример 01: IFS разделя низ, използвайки интервал като стойност

За първия ни пример ще разберем концепцията за разделяне на низ в bash, докато използваме интервал като разделителна стойност, използвайки променливата IFS. Първо, трябва да създадем bash файл в нашата система. Можем да създаваме нови файлове в нашата Linux система, като използваме командата 'touch'. Както е показано по-долу, ние създадохме bash файл 'file1.sh 'използвайки инструкцията за докосване:

$ touch файл1.ш

Отворете домашната директория на вашата Linux система, като използвате иконата на папката, показана в левия ъгъл на вашия Ubuntu 20.04 десктоп. Ще намерите вашия новосъздаден bash файл “file1.ш ”в него. Отворете файла “file1.sh ”и въведете скрипта по-долу. Първо, дефинирахме низ с име „str“ с някаква стойност в него. След това дефинираме разделителната променлива IFS като променлива, чиято стойност е интервал. След това използвахме оператора за четене, за да запазим и прочетем разделените данни в масив „strarr“, използвайки флага „-a“. Изразът 'echo' се използва за отпечатване на ред от низ заедно с броя на общите думи на масив, използвайки „$ # strarr [*]“. Цикълът „for“ се използва за отпечатване на стойностите на масив в разделена форма, като се използва променливата „var“. Обратната наклонена черта „\ n“ беше използвана в реда за печат заедно с променливата „var“, за да даде разделен прекъсване на един ред след всяка стойност на масива. Запазете скрипта, като използвате клавиша “Ctrl + S” и затворете файла, за да продължите по-нататък.

Върнете се на страната на терминала. Сега ще проверим изхода на горния код. За целта ще използваме командата 'bash' заедно с името на файл „file1.sh ”, за да го изпълните, което е показано по-долу. Първо, той показа реда, споменат в оператора „ехо“, заедно с броя на думите в масив. След това той показа всички стойности на масива, използвайки цикъла „for“, разделен от IFS.

$ bash файл1.ш

Пример 02: IFS разделя низ, използвайки символ като стойност

В гореспоменатия пример видяхте как да разделите променливите на низове на части, докато използвате интервал като разделител на IFS. Сега ще използваме символ за разделяне на низ, използвайки разделител IFS. Отворете командния терминал и създайте нов bash файл “file2.sh ”във вашата домашна директория на системата Linux, използвайки командата„ touch ”, както следва:

$ touch файл2.ш

Отворете домашната директория на вашата Linux система. В него ще намерите своя новосъздаден файл. Отворете новосъздадения файл и напишете представения по-долу баш код. На ред 3 инициирахме оператор „ехо“ за отпечатване на ред. Следващият ред чете входа, даден от потребител в терминал, използвайки ключовата дума “read”. След това дефинирахме разделителя „IFS“ и зададохме запетая „,“ като негова стойност на символа. Посочен е друг оператор за четене, който да чете и запазва стойностите на разделяне със запетая на низ, въведен от потребител в масив „strarr“. Най-накрая инициирахме три оператора за ехо, за да отпечатаме разделени със запетая стойности на разделяне като променливи, както е показано на изображението. Запазете и затворете този файл.

Сега трябва да изпълним този запазен файл. Изпълнете показаната по-долу команда bash, последвана от името на файл в терминал, за да го направите. Трябва да добавите някаква низова стойност, която трябва да съдържа запетая “,” в рамките на стойностите и да натиснете бутона Enter. Сега вашите данни са запазени в масив „strarr“. Последните три реда показват изхода на операторите „echo“. Можете да видите, че всеки текст преди и след запетая е бил използван като отделна стойност.

$ bash файл2.ш

Пример 03: IFS Split String

Направихме и двата предишни примера във файл bash. Сега ще имаме илюстрация на използването на „IFS“, без да създаваме bash файл. Отворете вашата командна обвивка, за да го направите. Първо, трябва да създадем низ „var“ със стойност на низ в него. Този низ съдържа запетаи след всяка дума.

$ var = ”Здравейте, аз съм на 25 години.”

След това инициализирайте променливата „IFS“ със символната запетая като разделителна стойност.

$ IFS =,

След това използвахме цикъла „for“, за да търсим всяка дума от променливата „var“, разделена с IFS разделителна запетая, и да я отпечатваме с помощта на израза „echo“.

$ за i в $ var
> направете
> ехо [$ i]
> Готово

Ще имате изхода по-долу. Той ще покаже всяка дума от низ променлива „var“ на нов ред поради разделителя запетая „,“, използван като разделен знак.

Заключение:

В това ръководство сте научили различни методи за разделяне на входните стойности в bash, напр.ж., с пространство или с характер. Надяваме се, че илюстрациите, споменати в това ръководство, ще ви помогнат да прекъснете всеки низ, използвайки разделителя IFS.

Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...