В сценариях мы должны разбивать строковые данные по разным причинам. Разделение – это встроенная функция во многих компьютерных языках, которая разделяет каждую строку данных на различные части. Однако в bash отсутствует встроенная функция для разделения строки. Чтобы разбить любое строковое значение, необходимо использовать множество одиночных и составных разделителей. Переменная IFS (внутренний разделитель полей) используется для указания определенного разделителя для разделения строк. В этой статье вы узнаете, как использовать различные методы для иллюстрации процесса взлома строкового значения в bash с помощью $IFS.
Убедитесь, что у вас установлена и настроена система на базе Linux. Мы будем работать над системой Ubuntu 20.04 Linux. Войдите в систему под учетной записью пользователя Ubuntu, чтобы начать работу над IFS. Будет лучше, если вы войдете в систему под своей учетной записью root. После входа в систему запустите терминал командной строки в своей системе из области «Действия».
В нашем первом примере мы поймем концепцию разделения строки в bash при использовании пробела в качестве значения-разделителя с помощью переменной IFS. Во-первых, мы должны создать в нашей системе файл bash. Мы можем создавать новые файлы в нашей системе Linux с помощью команды touch. Как показано ниже, мы создали файл bash file1.sh с помощью инструкции touch:
$ touch file1.sh
Откройте домашний каталог вашей системы Linux, используя значок папки, отображаемый в левом углу рабочего стола Ubuntu 20.04. В нем вы найдете свой недавно созданный файл bash «file1.sh». Откройте файл «file1.sh» и введите приведенный ниже сценарий. Во-первых, мы определили строку с именем «str» с некоторым строковым значением в ней. Затем мы определяем переменную-разделитель IFS как переменную, имеющую в качестве значения пробел. После этого мы использовали оператор чтения для сохранения и чтения разделенных данных в массив strarr с помощью флага «-a». Оператор ‘echo’ используется для печати строки строки вместе с подсчетом общего количества слов в массиве с использованием “${#strarr[*]}”. Цикл «for» используется для печати значений массива в разделенной форме с использованием переменной «var». Обратная косая черта «\n» использовалась в строке печати вместе с переменной «var», чтобы разделить одну строку после каждого значения массива. Сохраните сценарий с помощью клавиши «Ctrl+S» и закройте файл, чтобы продолжить.
file1.sh
#!/bin/bash str="Меня зовут AndreyEX" IFS=' ' read -a strarr <<< "$str" echo "В строке ${#strarr[*]} есть слова. for val in "$[strarr[@]]"; do printf "Şval\n" done
В вышеупомянутом примере вы видели, как разбить строковые переменные на части, используя пробел в качестве разделителя IFS. Теперь мы будем использовать символ для разделения строки с помощью разделителя IFS. Откройте командный терминал и создайте новый файл bash «file2.sh» в домашнем каталоге системы Linux, используя команду touch следующим образом:
$ touch file2.sh
Откройте домашний каталог вашей системы Linux. Вы найдете в нем свой недавно созданный файл. Откройте только что созданный файл и напишите представленный ниже код на bash. В строке 3 мы инициировали оператор «echo» для печати строки. Следующая строка считывает данные, введенные пользователем в терминале с использованием ключевого слова read. Затем мы определили разделитель «IFS» и установили запятую «,» в качестве его символьного значения. Другой оператор «read» был определен для чтения и сохранения значений, разделенных запятыми, в строке, которая вводится пользователем в массив «strarr». Наконец, мы инициировали три оператора echo для печати значений разделения, разделенных запятыми, в виде переменных, как показано на изображении. Сохраните и закройте этот файл.
*file2.sh
#!/bin/bash echo "Введите свое имя, фамилию и должность. read string IFS= read -a strarr <<< "Şstring" echo "Имя : ${strarr[0]} echo "Фамилия : ${strarr[1]}" echo "Должность : ${starr[2]]
Теперь нам нужно запустить этот сохраненный файл. Выполните показанную ниже команду bash, за которой следует имя файла в терминале, чтобы сделать это. Вы должны добавить строковое значение, которое должно содержать запятую «,» внутри значений, и нажать кнопку Enter. Теперь ваши данные сохранены в массиве strarr. Последние три строки показывают вывод операторов «echo». Как видите, каждый текст до и после запятой использовался как отдельное значение.
$ bash file2.sh
Мы сделали оба предыдущих примера в файле bash. Теперь у нас будет иллюстрация использования «IFS» без создания файла bash. Для этого откройте командную оболочку. Во-первых, нам нужно создать строку «var» со строковым значением в ней. Эта строка содержит запятые после каждого слова.
$ var="Привет, мне 25 лет".
Затем инициализируйте переменную IFS с помощью символьной запятой в качестве значения разделителя.
$ IFS=,
После этого мы использовали цикл «for» для поиска каждого слова из переменной «var», разделенного запятой-разделителем IFS, и печати его с помощью оператора «echo».
$ for i in $var >do >echo [$i] >Done
У вас будет результат ниже. Он покажет каждое слово строковой переменной «var» на новой строке из-за запятой-разделителя «», используемой в качестве символа разделения.
В этой статье вы узнали о различных методах разделения входных значений в bash, например, с помощью пробела или символа. Мы надеемся, что иллюстрации, упомянутые в этой статье, помогут вам разбить каждую строку с помощью разделителя IFS.
Круто!
Вы код проверяете, который демонстрируете пользователям, дичь какая-то с синтаксисом у вас