Oct 20, 2023 3 min read

Bash Sequence Expression (Range)

Learn bash sequence expression with our step-by-step tutorial. It allows users to generate a sequence of values within a specified range.

Bash Sequence Expression
Table of Contents

Introduction

Bash sequence expression, also known as range, allows users to generate a sequence of values within a specified range. This feature is particularly useful when dealing with iterative tasks or generating a series of numbers or characters. By using sequence expressions, users can simplify scripts and perform actions efficiently in a controlled and concise manner.

By specifying the start and end points range, the Bash sequence expression creates a range of integers or characters. It is typically used in along with for loops.

You will learn about bash sequence expression in this tutorial.

Bash Sequence Expression

The form of the sequence expression is as follows:

{START..END[..INCREMENT]}
  • An opening brace and a closing brace are used to start and end the expression, respectively.
  • Both START and END may be single characters or positive integers.
  • The START and END values are compulsory and are separated by two dots .., with no space between them.
  • The INCREMENT value is negotiable. If it is present, it must be separated from the END value by two dots .., with no space in between. The statement is expanded in lexicographic order when characters are provided.
  • The expression encompasses any characters or numeric values between START and END, including the provided values.
  • An expression that has been incorrectly formed is left unaltered.

Here is the expression in use:

echo {0..3}

The default increment is 1 when no INCREMENT is specified:

Output

0 1 2 3

In addition, you can use other characters. The following example prints the alphabet:

echo {a..z}
Output

a b c d e f g h i j k l m n o p q r s t u v w x y z

The expression will provide a range that decreases if START is greater than END:

for i in {3..0}
do
  echo "Number: $i"
done

Output

Number: 3
Number: 2
Number: 1
Number: 0

When an INCREMENT is specified, it is used as the intermediate step between each generated item:

for i in {0..20..5}
do
  echo "Number: $i"
done

Each generated number is greater than the previous number by 5:

Output

Number: 0
Number: 5
Number: 10
Number: 15
Number: 20

When generating a range with integers, you can add a leading 0 to force each number to be the same length. Prefix either START or END with a zero to add leading zeros to generated integers:

for i in {00..3}
do
  echo "Number: $i"
done

Output

Number: 00
Number: 01
Number: 02
Number: 03

Other characters may be used as a prefix or suffix to the expression:

echo A{00..3}B
Output

A00B A01B A02B A03B

The expression is left unchanged if it is incorrectly formed:

echo {0..}
Output

0..

FAQs on Bash Sequence Expression

How does a Bash sequence expression work?

A Bash sequence expression is defined using a starting value, an optional increment, and an ending value. It generates the sequence by incrementing the current value with the specified increment until it reaches or goes beyond the ending value.

How do I use a Bash sequence expression (range)?

To use a sequence expression in Bash, you can enclose it within curly brackets {} and use it in for loops, command substitution, array initialization, or any other context where sequential values are needed.

What are some examples of using a Bash sequence expression?

Examples of using a Bash sequence expression include generating a series of numbers ({1..10}), letters ({a..z}), or even custom values ({start..end..increment}).

Can a Bash sequence expression be used with for loops?

Yes, a Bash sequence expression can be used with for loops. For example, for i in {1..5}; do echo $i; done will iterate over the values 1 to 5.

How can I reverse the order of a Bash sequence expression?

To reverse the order of a sequence expression, you can define the range in descending order, like {5..1} or {z..a}.

Is it possible to use a Bash sequence expression to create an array?

Yes, a Bash sequence expression can be used to initialize an array directly. For example, array=( {1..5} ) creates an array with values from 1 to 5.

What happens if the starting value is greater than the ending value in a sequence expression?

If the starting value is greater than the ending value, the sequence expression will not generate any values. It is essential to ensure the correct order when specifying a range.

Conclusion

The Bash sequence expression enables you to generate a wide range of characters or integers.

If you have any queries, feel free to post a comment below, and we'll be happy to answer them.

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to DevOps Tutorials - VegaStack.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.