How to Bash Ranges
-
Use the
forLoop to Get Range in Bash -
Use the
forLoop With Three-Expression to Get Range in Bash -
Use the
whileLoop to Get Range in Bash -
Use
evalto Get Range in Bash -
Use
seqto Get Range in Bash
This tutorial demonstrates iterating through a range of integers in bash with for loop and while loop.
Use the for Loop to Get Range in Bash
The bash script below uses a for loop with brace expansion to loop through a range of numbers. The numbers inside the braces are incremented sequentially.
#!/bin/bash
printf "Print Numbers from 0 to 5\n"
for x in {0..5}
do
printf "number:$x\n"
done
Output:
Print Numbers from 0 to 5
number:0
number:1
number:2
number:3
number:4
number:5
Use the for Loop With Three-Expression to Get Range in Bash
The script uses a for loop with a three-expression like in C language. Here, expr1 is the initialization, expr2 is the condition, and expr3 is the increment.
In our case, x is initialized to 0, x is tested if it is less than or equal to 5, and lastly, x is incremented by 1.
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
done
Output:
Print Numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
Use the while Loop to Get Range in Bash
This uses a while loop with a binary comparison operator, -le, that is used for arithmetic value comparison.
In our case, the while loop executes as long as x is less than or equal to the variable $max.
#!/bin/bash
x=0
max=5
printf "Print numbers from $x to $max\n"
while [ $x -le $max ]; do
printf "number: $x\n"
x=$(($x+1))
done
Output:
Print numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
Use eval to Get Range in Bash
eval is a bash command used to execute arguments as shell commands. In the script below, the braces generate numbers from 0 to $max in increments of 1, the for loop iterates over these numbers, and the printf command displays them.
#!/bin/bash
max=4
printf "Print Numbers from 0 to $max\n"
for x in `eval echo {0..$max}`
do
printf "number: $x\n"
done
Output:
Print Numbers from 0 to 4
number: 0
number: 1
number: 2
number: 3
number: 4
Use seq to Get Range in Bash
seq is a bash command used to generate numbers from start to finish in increment steps.
In our case, seq generates numbers from x to $max in increments of 1. The for loop iterates over these numbers, and the printf command is used to display them.
x=0
max=5
printf "Print numbers from $x to $max\n"
for x in $(seq $x $max)
do
printf "number: $x\n"
done
Output:
Print numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
