Bash Loop Through a List of Strings

Bash Loop Through List Strings



En lista över strängar eller array eller elementföljd kan itereras med hjälp av för loop i bash. Hur du kan iterera listan över strängar i Bash by for loop visas i denna handledning med hjälp av olika bash script -exempel. Om du är nybörjare är bash programmering kan du läsa självstudien på BASH för loop -exempel innan du börjar den här självstudien.

Skapa en bash -fil med namnet ' for_list1.sh ’Och lägg till följande skript. Ett strängvärde med mellanslag används inom för loop. Som standard är strängvärdet åtskilt av mellanslag. För loop kommer att dela strängen i ord och skriva ut varje ord genom att lägga till en ny rad.







#!/bin/bash
# Läs en sträng med mellanslag med loop
förvärdeiJag gillar att programmera
do
kastade ut $ värde
Gjort

Produktion:



$våldsamt slagfor_list1.sh



Exempel-2: Iterering av en strängvariabel med hjälp av loop

Skapa en bash -fil med namnet ' for_list2.sh ’Och lägg till följande skript. Tilldela en text till variabeln, StringVal och läs värdet av denna variabel med hjälp av for loop. Detta exempel fungerar också som föregående exempel och delar upp variabelns värde i ord baserat på mellanslag.





#!/bin/bash
# Definiera en strängvariabel med ett värde
StringVal='Välkommen till linuxhint'

# Iterera strängvariabeln med hjälp av loop
förtimmari $ StringVal;do
kastade ut $ timmar
Gjort

Produktion:

$våldsamt slagfor_list2.sh



Exempel-3: Iterera en rad strängvärden

Skapa en bash -fil med namnet ' for_list3.sh ’Och lägg till följande skript. En rad strängvärden deklareras med typ i detta skript. Två värden i matrisen som innehåller utrymme är Linux Mint och Red Hat Linux . Detta skript genererar utdata genom att dela upp dessa värden i flera ord och skriva ut som separat värde. Men det här är inte rätt utgång. Lösningen på denna typ av problem visas i nästa exempel.

#!/bin/bash

# Deklarera en rad strängar med typ
deklarera -till StringArray=('Linux Mint' 'Fedora' 'Red Hat Linux' 'Ubuntu' 'Debian' )

# Iterera strängmatrisen med loop
förtimmari $ {StringArray [@]};do
kastade ut $ timmar
Gjort

Produktion:

$våldsamt slagfor_list3.sh

Exempel-4: Skriv ut strängvärdet för flera ord som ett enda värde

Skapa en bash -fil med namnet ' for_list4.sh ’Och lägg till följande skript. I det här exemplet, varje element i matrisvariabeln, StringArray innehåller värden på två ord. För att skriva ut varje värde utan att dela upp och lösa problemet med föregående exempel behöver du bara bifoga arrayvariabeln med dubbel offert inom för loop.

#!/bin/bash

# Deklarera en strängmatris med typ
deklarera -till StringArray=('Windows XP' 'Windows 10' 'Windows ME' 'Windows 8.1'
'Windows Server 2016' )

# Läs matrisvärdena med utrymme
förtimmari '$ {StringArray [@]}';do
kastade ut $ timmar
Gjort

Produktion:

$våldsamt slagfor_list4.sh

Exempel-5: Iterering av strängvärden för en array med '*'

Skapa en bash -fil med namnet ' for_list5.sh 'Med följande kod. Här används symbolen '*' för att läsa alla strängvärden i matrisen. Den första för loop används för att visa array -värden i flera rader och den andra för loop används för att visa array -värden på en enda rad.

#!/bin/bash

#Deklarera en strängmatris
LanguageArray=('PHP' 'Java' 'C #' 'C ++' 'VB.Net' 'Pytonorm' 'Perl')

# Skriv ut matrisvärden i rader
kastade ut 'Skriv ut varje element i ny rad'
förval1i $ {LanguageArray [*]};do
kastade ut $ val1
Gjort

kastade ut ''

# Skriv ut matrisvärden på en rad
kastade ut 'Skriv ut alla element på en enda rad'
förval2i '$ {LanguageArray [*]}';do
kastade ut $ val2
Gjort
kastade ut ''

Produktion:

$våldsamt slagfor_list5.sh

Exempel-6: Iterering av kommaseparerade strängvärden

Skapa en ny bash -fil med namnet ' for_list6.sh ’ med följande kod. Här, kommatecken (,) används för att dela strängvärdena. IFS variabel används för att ställa in fältavgränsaren.

#!/bin/bash
DataList='HTML5, CCS3, BootStrap, JQuery'
Field_Separator=$ IFS

# ställ in komma som intern fältavskiljare för stränglistan
IFS=,
förtimmari $ DataList;
do
kastade ut $ timmar
Gjort

IFS=$ Field_Separator

Produktion:

$våldsamt slagfor_list6.sh

Exempel-7: Läs flera strängmatriser tillsammans

Skapa en bash -fil med namnet ' for_list7.sh ’Och lägg till följande skript. I det här exemplet definieras två strängmatriser och kombineras till en annan array. Den yttre för slingan används för att läsa den kombinerade gruppen och den inre för slingan används för att läsa varje inre array.

#! /bin/sh
str_array1=('Magento 2.2.4' 'WooCommerce')
str_array2=('CodeIgnitor' 'Laravel')
kombinera=(str_array1 str_array2)
förlyckadesi $ {kombinera [@]}
do
eval 'för val i' $ {'$ arrItem'[@]}'; gör eko '$ val'; gjort '
Gjort

Produktion:

$våldsamt slagfor_list7.sh

Exempel-8: Använd mönster för att läsa listan över strängar

Skapa en ny bash -fil med namnet for_list8.sh med följande kod. Här, ' /, /' mönster används för att dela strängvärdena baserat på komma.

#! /bin/sh

# Definiera en lista med strängvariabel
stringList= WordPress, Joomla, Magento

# Använd komma som separator och applicera som mönster
förtimmari $ {stringList //,/}
do
kastade ut $ timmar
Gjort

Produktion:

$våldsamt slagfor_list8.sh

Hoppas, exemplen på denna handledning hjälper dig att förstå användningen av för slinga för att iterera listan över strängar, för en video om detta ämne, se nedan: