Цикл Bash по списку строк

Bash Loop Through List Strings



Список строк, массива или последовательности элементов можно повторять с помощью для цикл в bash. Как вы можете перебирать список строк в Bash с помощью цикла for, показано в этом руководстве с использованием различных примеров сценариев bash. Если вы новичок в программировании на bash, вы можете прочитать руководство на BASH для примеров цикла перед тем, как начать это руководство.

Создайте файл bash с именем ‘ for_list1.sh ’И добавьте следующий скрипт. Внутри цикла for используется строковое значение с пробелами. По умолчанию строковое значение разделяется пробелом. Цикл For разделит строку на слова и напечатает каждое слово, добавив новую строку.







#! / bin / bash
# Прочитать строку с пробелами, используя цикл for
дляценитьвМне нравится программировать
делать
выбросил $ значение
сделано

Выход:



$трепатьfor_list1.sh



Пример-2: Итерация строковой переменной с использованием цикла for

Создайте файл bash с именем ‘ for_list2.sh ’И добавьте следующий скрипт. Присвойте текст переменной, StringVal и прочитайте значение этой переменной, используя цикл for. Этот пример также будет работать так же, как и предыдущий, и разделит значение переменной на слова в зависимости от пробела.





#! / bin / bash
# Определить строковую переменную со значением
StringValзнак равно'Добро пожаловать в linuxhint'

# Итерировать строковую переменную, используя цикл for
длячасыв $ StringVal;делать
выбросил $ часов
сделано

Выход:

$трепатьfor_list2.sh



Пример-3: Итерация массива строковых значений

Создайте файл bash с именем ‘ for_list3.sh ’И добавьте следующий скрипт. В этом скрипте объявляется массив строковых значений с типом. Два значения в массиве, содержащие пробел: Linux Mint а также Red Hat Linux . Этот сценарий сгенерирует вывод, разделив эти значения на несколько слов и распечатав как отдельные значения. Но это не тот результат. Решение проблемы такого типа показано в следующем примере.

#! / bin / bash

# Объявить массив строк с типом
объявлять StringArrayзнак равно('Linux Mint' 'Fedora' 'Red Hat Linux' 'Ubuntu' 'Debian' )

# Итерировать массив строк, используя цикл for
длячасыв $ {StringArray [@]};делать
выбросил $ часов
сделано

Выход:

$трепатьfor_list3.sh

Пример-4: Распечатать строковое значение из нескольких слов как одно значение

Создайте файл bash с именем ‘ for_list4.sh ’И добавьте следующий скрипт. В этом примере каждый элемент переменной массива, StringArray содержит значения двух слов. Чтобы распечатать каждое значение без разделения и решить проблему из предыдущего примера, вам просто нужно заключить переменную массива в двойная цитата внутри цикла for.

#! / bin / bash

# Объявить массив строк с типом
объявлять StringArrayзнак равно('Windows XP' 'Windows 10' 'Windows ME' 'Windows 8.1'
'Windows Server 2016' )

# Считываем значения массива с пробелом
длячасыв '$ {StringArray [@]}';делать
выбросил $ часов
сделано

Выход:

$трепатьfor_list4.sh

Пример 5: Итерация строковых значений массива с использованием '*'

Создайте файл bash с именем ‘ for_list5.sh ’Со следующим кодом. Здесь символ «*» используется для чтения всех строковых значений массива. Первый цикл for используется для отображения значений массива в несколько строк, а второй цикл for используется для отображения значений массива в одной строке.

#! / bin / bash

# Объявить массив строк
LanguageArrayзнак равно('PHP' 'Джава' 'C #' 'C ++' 'VB.Net' 'Python' 'Perl')

# Печатать значения массива в строках
выбросил 'Печатать каждый элемент с новой строки'
дляval1в $ {LanguageArray [*]};делать
выбросил $ val1
сделано

выбросил ''

# Вывести значения массива в одну строку
выбросил 'Вывести все элементы в одну строку'
дляval2в '$ {LanguageArray [*]}';делать
выбросил $ val2
сделано
выбросил ''

Выход:

$трепатьfor_list5.sh

Пример-6: Итерация строковых значений, разделенных запятыми

Создайте новый файл bash с именем ‘ for_list6.sh ’ со следующим кодом. Здесь, запятая (,) используется для разделения строковых значений. IFS переменная используется для установки разделителя полей.

#! / bin / bash
DataListзнак равно'HTML5, CCS3, BootStrap, JQuery'
Поле_сепараторзнак равно$ IFS

# установить запятую как внутренний разделитель полей для списка строк
IFSзнак равно
длячасыв $ DataList;
делать
выбросил $ часов
сделано

IFSзнак равно$ Field_Separator

Выход:

$трепатьfor_list6.sh

Пример 7: Совместное чтение нескольких строковых массивов

Создайте файл bash с именем ‘ for_list7.sh ’И добавьте следующий скрипт. В этом примере определены два строковых массива, которые объединены в другой массив. Внешний цикл for используется для чтения объединенного массива, а внутренний цикл for используется для чтения каждого внутреннего массива.

#! / bin / sh
str_array1знак равно('Magento 2.2.4' 'WooCommerce')
str_array2знак равно(CodeIgnitor 'Laravel')
комбинироватьзнак равно(str_array1 str_array2)
дляудалосьв $ {объединить [@]}
делать
оценка 'для val в' $ {'$ arrItem'[@]}'; сделать echo '$ val'; done '
сделано

Выход:

$трепатьfor_list7.sh

Пример 8: Использование шаблона для чтения списка строк

Создайте новый файл bash с именем for_list8.sh со следующим кодом. Здесь, ‘/, /’ шаблон используется для разделения строковых значений на основе запятой.

#! / bin / sh

# Определить список строковых переменных
stringList= WordPress, Joomla, Magento

# Использовать запятую как разделитель и применять как шаблон
длячасыв $ {stringList //, /}
делать
выбросил $ часов
сделано

Выход:

$трепатьfor_list8.sh

Надеюсь, примеры этого руководства помогут вам понять использование для цикла для итерации списка строк см. видео по этой теме ниже: