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

Как использовать $ IFS в Bash?

Как использовать $ IFS в Bash?
В сценариях мы должны разбивать строковые данные по разным причинам. Разделение - это встроенная функция во многих компьютерных языках, которая разделяет каждую строку данных на различные части. Однако в bash отсутствует встроенная функция для разделения строки. Чтобы разбить любое строковое значение, необходимо использовать множество одиночных и составных разделителей. Переменная IFS (внутренний разделитель полей) используется для указания определенного разделителя для разделения строк. В этом руководстве вы узнаете, как использовать различные методы для иллюстрации процесса взлома строкового значения в bash с помощью $ IFS.

Предпосылки

Убедитесь, что у вас установлена ​​и настроена система на базе Linux. Мы будем работать над Ubuntu 20.04 Система Linux. Войдите в систему под своей учетной записью пользователя Ubuntu, чтобы начать работу над IFS. Будет лучше, если вы войдете в систему под своей учетной записью root. После входа в систему запустите терминал командной строки в своей системе из области «Активность».

Пример 01: IFS разделяет строку с использованием пробела в качестве значения

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

$ touch file1.ш

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

Вернись на сторону терминала. Теперь мы проверим вывод приведенного выше кода. Для этого мы будем использовать команду 'bash' вместе с именем файла «file1.sh », чтобы выполнить его, как показано ниже. Во-первых, он отображал строку, упомянутую в операторе «echo», вместе с количеством слов в массиве. После этого он отобразил все значения массива, используя цикл «for», разделенный IFS.

$ bash file1.ш

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

В вышеупомянутом примере вы видели, как разбить строковые переменные на части, используя пробел в качестве разделителя IFS. Теперь мы будем использовать символ для разделения строки с помощью разделителя IFS. Откройте командный терминал и создайте новый файл bash «file2.sh »в домашнем каталоге системы Linux с помощью следующей команды« touch »:

$ touch file2.ш

Откройте домашний каталог вашей системы Linux. Вы найдете в нем свой недавно созданный файл. Откройте только что созданный файл и напишите представленный ниже код на bash. В строке 3 мы инициировали оператор «echo» для печати строки. Следующая строка считывает данные, введенные пользователем в терминале с использованием ключевого слова read. Затем мы определили разделитель «IFS» и установили запятую «,» в качестве его символьного значения. Другой оператор «чтения» был задан для чтения и сохранения значений, разделенных запятыми, в строке, которая вводится пользователем в массив «strarr». Наконец, мы инициировали три оператора эха для печати значений разделения, разделенных запятыми, в виде переменных, как показано на изображении. Сохраните и закройте этот файл.

Теперь нам нужно запустить этот сохраненный файл. Выполните показанную ниже команду bash, за которой следует имя файла в терминале, чтобы сделать это. Вы должны добавить строковое значение, которое должно содержать запятую «,» внутри значений, и нажать кнопку Enter. Теперь ваши данные сохранены в массиве strarr. Последние три строки показывают вывод операторов «эхо». Как видите, каждый текст до и после запятой использовался как отдельное значение.

$ bash file2.ш

Пример 03: IFS Split String

Мы сделали оба предыдущих примера в файле bash. Теперь у нас будет иллюстрация использования «IFS» без создания файла bash. Откройте командную оболочку, чтобы сделать это. Во-первых, нам нужно создать строку «var» со строковым значением в ней. Эта строка содержит запятые после каждого слова.

$ var = ”Привет, мне 25 лет.”

Затем инициализируйте переменную IFS с помощью символьной запятой в качестве значения разделителя.

$ IFS =,

После этого мы использовали цикл «for» для поиска каждого слова из переменной «var», разделенного запятой-разделителем IFS, и вывода его с помощью оператора «echo».

$ for i в $ var
> делать
> эхо [$ i]
> Готово

У вас будет результат ниже. Он покажет каждое слово строковой переменной «var» на новой строке из-за запятой-разделителя «», используемой в качестве символа разделения.

Заключение:

В этом руководстве вы узнали о различных методах разделения входных значений в bash, e.грамм., с пробелом или с символом. Мы надеемся, что иллюстрации, упомянутые в этом руководстве, помогут вам разбить каждую строку с помощью разделителя IFS.

Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...
Установите последнюю версию игры OpenRA Strategy в Ubuntu Linux
OpenRA - это игровой движок Libre / Free Real Time Strategy, воссоздающий ранние игры Westwood, такие как классическая Command & Conquer: Red Alert. Р...