Bash Scripting Examples: Iteration and Arrays

Bash Scripting Examples: Iteration and Arrays

Last updated:
Table of Contents

Create array

some_array[0]="foo"
some_array[1]="bar"
some_array[2]="baz"

For element in array, do

Suppose some_array is an array like the one in the previous example. This will print the array's contents.

# create array
some_array[0]="foo"
some_array[1]="bar"
some_array[2]="baz"

for i in "${some_array[@]}"; do
  echo "$i";
done
# PRINTS
# foo
# bar
# bar

For i in range, do

for i in {1..5}; do
  echo "$i";
done
# PRINTS
# 1
# 2
# 3
# 4
# 5

For i in sequence, do

seq <from> <to> command generates a list of numbers from <from> to to:

for NUM in `seq 1 4`; do 
  ./some-command "$NUM"; 
done
# PRINTS
# 1
# 2
# 3
# 4

For element in sequence do

The elements in the arbitrary list can be of mixed types

For cases when you want to run some commands for every element in an arbitrary list:

Example For each element in the list [1, 3, "foo"] run echo:

for i in 1 3 "foo"; do
  echo "$i"
done
# PRINTS
# 1
# 3 
# foo

For element in sequence do, one-liner

Semicolons (;) are now mandatory to separate commands

Same as above, but as a single line so you can run in the terminal:

$ for i in 1 3 "foo"; do echo "$i"; done;
1
3
foo

For line in file, do

while read p; do
  echo $p
done < /path/to/some/file

For file in directory, do

as a one-liner: for f in some/path/*; do echo "$f"; done

for f in some/path/*; do
  echo "$f"
done 

Split string by delimiter

IFS is needed even though you are not going to use it.

The string gets split into the tokens array variable.

IFS=':' read -a tokens <<< "foo:bar:baz"

echo ${tokens[0]}
#prints "foo"

some_var=${tokens[2]}
echo $some_var
#prints "baz"

Dialogue & Discussion