Използване на променлива $ IFS
Специалната променлива на обвивката $ IFS се използва в bash за разделяне на низ на думи. Променливата $ IFS се нарича Вътрешен разделител на полета (IFS), който се използва за присвояване на специфичния разделител за разделяне на низа. Границите на думите са идентифицирани в bash от $ IFS. Бялото пространство е стойността на разделителя по подразбиране за тази променлива. Всяка друга стойност като „ t“, „ n“, „-“ и т.н. може да се използва като разделител. След присвояване на стойността на променлива $ IFS, стойността на низа може да бъде прочетена чрез две опции. Това са „-r“ и „-a“. Опцията „-r“ се използва за четене на обратна наклонена черта () като знак, а не за бягство, а опцията „-a“ се използва за съхраняване на разделените думи в променлива на масив. Низът може да бъде разделен без използване на променлива $ IFS в bash. В следващите примери са показани различни начини за разделяне на низови данни (с $ IFS или без $ IFS).
Пример-1: Разделяне на низ въз основа на
Стойността на низа е разделена на празно пространство по подразбиране. Създайте файл с име „split1.sh“ и добавете следния код. Тук променливата $ text се използва за присвояване на стойност на низ. Променливата на черупката, $ IFS се използва за присвояване на знака, който ще се използва за разделяне на низовите данни. Пространството се използва в този скрипт като разделител. Опцията „-a“ се използва с команда за четене за съхраняване на разделените данни в променлива на масив, наречена $ strarr. Цикълът „for“ се използва за четене на всеки елемент от масива, $ strarr.
split1.sh
#!/bin/bash
#Определете стойността на низа
текст=„Добре дошли в LinuxHint“
# Задайте пространство като разделител
IFS=''
#Прочетете разделените думи в масив въз основа на разделител на интервали
Прочети -да сеstrarr<<< '$ текст'
#Пребройте общите думи
изхвърлен 'Има$ {#strarr [*]}думи в текста. '
# Отпечатайте всяка стойност на масива, като използвате цикъла
зачасв '$ {strarr [@]}';
направете
printf '$ часовен'
Свършен
Изход:
Стартирайте скрипта.
$башsplit1.sh
Следният изход ще се появи след стартиране на скрипта.
Пример-2: Разделяне на низ въз основа на определен символ
Всеки отделен знак може да се използва като разделител за разделяне на стойността на низа. Създайте файл с име split2.sh и добавете следния код. Тук името на книгата, името на автора и цената се вземат чрез добавяне на запетая (,) като входен низ. След това стойността на низа се разделя и съхранява в масив въз основа на стойността на променливата на черупката, $ IFS. Всяка стойност на елементите на масива се отпечатва от стойността на индекса.
split2.sh
#!/bin/bash#Прочетете стойността на низа
изхвърлен „Въведете име на книга, име на автор и цена, като разделите запетая. '
Прочетитекст
# Задайте запетая като разделител
IFS=','
#Прочетете разделените думи в масив въз основа на разделител на запетаи
Прочети -да сеstrarr<<< '$ текст'
#Отпечатайте разделените думи
изхвърлен „Име на книгата:$ {strarr [0]}'
изхвърлен „Име на автора:$ {strarr [1]}'
изхвърлен 'Цена :$ {strarr [2]}'
Изход:
Стартирайте скрипта.
$башsplit2.shСледният изход ще се появи след стартиране на скрипта.
Пример-3: Разделете низа без променлива $ IFS
Този пример показва как стойността на низа може да бъде разделена, без да се използва $ IFS в bash. Създайте файл с име „ split3.sh ’ и добавете следния код. Според скрипта, текстова стойност с двоеточие (:) трябва да се вземе като вход за разделяне. Тук командата „readarray“ с опция -d се използва за разделяне на низовите данни. Опцията „-d“ се използва за дефиниране на разделителния знак в командата като $ IFS. След това цикълът „for“ се използва за отпечатване на елементите на масива.
split3.sh
#!/bin/bash#Прочетете основния низ
изхвърлен 'Въведете низ с двоеточие (:) за разделяне'
Прочетиmainstr
#Разделете низа въз основа на разделителя, ':'
четене на масиви-д:-Tstrarr<<< '$ mainstr'
printf 'н'
# Отпечатайте всяка стойност на масива, като използвате цикъл
за (( н=0; н< $ {#strarr [*]}; n ++))
направете
изхвърлен '$ {strarr [n]}'
Свършен
Изход:
Стартирайте скрипта.
$башsplit3.shСледният изход ще се появи след стартиране на скрипта.
Пример-4: Разделете низа с многознаков разделител
Стойността на низа се разделя от разделител с един знак във всички предишни примери. В този пример е показано как можете да разделите низа с помощта на многознаков разделител. Създайте файл с име Times split4.sh и добавете следния код. Тук променливата $ text се използва за съхраняване на низови данни. Променливата $ delimiter се използва за присвояване на многознакови данни, които се използват като разделител в следващите оператори. Променливата $ myarray се използва за съхраняване на всички разделени данни като елемент от масив. И накрая, всички разделени данни се отпечатват чрез цикъл „for“.
split4.sh
#!/bin/bash#Определете низ за разделяне
текст='learnHTMLlearnPHPlearnMySQLlearnJavascript'
#Определете многознаков разделител
разделител='уча'
#Свържете разделителя с основния низ
низ=$ текст$ разделител
#Разделете текста въз основа на разделителя
myarray=()
докато [[ $ низ ]];направете
myarray+=( '$ {string %% '$ delimiter'*}' )
низ=$ {string#*'$ delimiter'}
Свършен
#Отпечатайте думите след разделянето
застойноств $ {myarray [@]}
направете
изхвърлен -н '$ стойност'
Свършен
printf 'н'
Изход:
Стартирайте скрипта.
$башsplit4.shСледният изход ще се появи след стартиране на скрипта.
Заключение:
Низовите данни трябва да се разделят за различни програмни цели. В този урок са показани различни начини за разделяне на низови данни в bash. Надявам се, че след като практикуват горните примери, читателите ще могат да разделят всички низови данни въз основа на техните изисквания.
За повече информация гледайте видеото !