Bash Shell Script Iterate Genom Array Värden

Att ha en rad variabler är till nytta om du inte kan använda dessa värden på något sätt. Detta tech-recept visar några metoder för att slingra igenom värdena för en array i bash-skalet.


Ta till exempel array definitionen nedan:

namn = (Jennifer Tonya Anna Sadie)

Följande uttryck utvärderar till alla värden i arrayen:

$ {namn [@]}

Det kan också användas var som helst en variabel eller en sträng kan användas.

En enkel för loop kan härleda ett värde åt gången genom denna array:

för namn i $ {namn [@]}
do
echo $ namn
# andra saker på $ namn
Gjort

Detta skript går igenom arrayvärdena och skriver ut dem, en per rad. Ytterligare uttalanden kan placeras i slingkroppen för att vidta ytterligare åtgärder, såsom att ändra varje fil i en rad filnamn.

Ibland är det användbart att gå igenom en array och känna till det numeriska indexet för den matris du använder (till exempel så att du kan hänvisa till en annan matris med samma index). Samma slinga i exemplet ovan kan också uppnås på följande sätt:

för ((i = 0; i <$ {# namn [@]}, jag ++)) gör echo $ {namn [$ i]} # yadda yadda gjort

I det här exemplet utvärderas värdet $ {# namn [@]} till antalet element i arrayen (4 i det här fallet). De enskilda elementen i matrisen är åtkomliga, en i taget, med indexvärdet $ i som $ {namn [$ i]}