Bash Scripting

Bash Arrays Explained Simply: Beginner’s Guide with Examples

If you’re learning Bash scripting, one of the most useful features you’ll come across is the array. Arrays make it easy to store and work with multiple values under one name instead of creating a separate variable for each.

This guide will explain arrays in simple terms with examples and outputs so even beginners can follow along.

What is an Array in Bash?

An array in Bash is a variable that can store multiple values together. These values can be strings, numbers, or even a mix of both. Bash doesn’t care about data type — it treats everything as text.

There are two main types of arrays in Bash:

  • Indexed arrays – values are stored in numbered positions, starting from 0.
  • Associative arrays – values are stored with named keys, which makes them easier to identify.

Creating Arrays

Indexed Arrays

You can create them one by one or all at once:

# One by one
fruits[0]="apple"
fruits[1]="banana"
fruits[2]="cherry"
# All at once
numbers=(10 20 30 40)
# Mixed values
mixed=("apple" 42 "hello.txt")

Output:

echo ${fruits[@]}   → apple banana cherry  
echo ${numbers[@]}  → 10 20 30 40  
echo ${mixed[@]}    → apple 42 hello.txt  

Associative Arrays

These work with keys instead of numbers (requires Bash 4+):

declare -A colors
colors[red]="#FF0000"
colors[blue]="#0000FF"
colors[green]="#00FF00"

declare -a makes a normal indexed array (numbered positions), while declare -A makes an associative array (named keys, works in Bash 4+). So, declare -A colors means: “create a variable called colors and treat it as an associative array.”

Output:

echo ${colors[red]}   → #FF0000  
echo ${!colors[@]}    → red blue green  
echo ${colors[@]}     → #FF0000 #0000FF #00FF00  

Accessing Array Values

Once values are stored, here’s how you use them:

# Get one item
echo ${fruits[1]}   # banana  
echo ${numbers[2]}  # 30  
echo ${mixed[0]}    # apple 
# Get all items
echo ${fruits[@]}   # apple banana cherry
# Get keys in associative arrays
echo ${!colors[@]}  # red blue green  
# Get values in associative arrays
echo ${colors[@]}   # #FF0000 #0000FF #00FF00  

Finding Array Length

echo ${#fruits[@]}    # number of items → 3  
echo ${#fruits[0]}    # length of first word → 5 (apple)  

Looping Through Arrays

Loop through all values:

for item in "${fruits[@]}"; do
  echo $item
done

Output:

apple  
banana  
cherry  

Loop with index numbers:

for i in "${!fruits[@]}"; do
  echo "Index $i = ${fruits[$i]}"
done

Output:

Index 0 = apple  
Index 1 = banana  
Index 2 = cherry  

Loop through associative arrays:

for key in "${!colors[@]}"; do
  echo "$key = ${colors[$key]}"
done

Output:

red = #FF0000  
blue = #0000FF  
green = #00FF00  

Adding and Removing Items

Add new items

fruits+=("dragonfruit")
echo ${fruits[@]}

Output:

apple banana cherry dragonfruit  

Remove a single item

unset fruits[1]
echo ${fruits[@]}

Output:

apple cherry dragonfruit  

Remove the entire array

unset fruits
echo ${fruits[@]}

Output:

(nothing — the array is empty)  

Conclusion

Arrays in Bash are a simple but powerful way to organize data. You can store words, numbers, or filenames all in one place, and manage them easily using loops, keys, and commands.

  • Use indexed arrays when order matters.
  • Use associative arrays when names or labels make things easier.
  • You can mix different types of values, add new ones, or remove them whenever needed.

Bash Arrays FAQs

Q1. What is an array in Bash?

An array in Bash is a single variable that can hold many values at once, like a list.

Q2. Can Bash arrays store both strings and numbers?

Yes, Bash arrays can hold text, numbers, and even a mix of both.

Q3. What is the difference between indexed and associative arrays?

Indexed arrays use numbers as positions (0, 1, 2…), while associative arrays use names or keys (like “red” or “blue”).

Q4. What does declare -a and declare -A mean?

declare -a creates a normal indexed array, and declare -A creates an associative array (which works only in Bash version 4 or newer).

Q5. How do I check my Bash version?

Run this command:
bash --version
Associative arrays require Bash 4 or newer.

0xSnow

0xSnow is a cybersecurity researcher with a focus on both offensive and defensive security. Working with ethical hacking, threat detection, Linux tools, and adversary simulation, 0xSnow explores vulnerabilities, attack chains, and mitigation strategies. Passionate about OSINT, malware analysis, and red/blue team tactics, 0xSnow shares detailed research, technical walkthroughs, and security tool insights to support the infosec community.

Recent Posts

git fetch vs git pull: How They Work and When to Use Each

Both git fetch and git pull talk to a remote repository, but they do very different things to your…

1 week ago

git cherry-pick Command: Apply Commits from Another Branch

Sometimes the change you need already exists, just on the wrong branch. A hotfix lands…

1 week ago

Best Email APIs for Secure Business Email: Why Developers Are Moving Beyond SMTP

Email is still one of the most important communication channels inside modern applications. Password resets,…

1 week ago

Nginx Commands in Linux: Start, Stop, Reload, Test, and Log

Nginx is a high-performance web server and reverse proxy trusted by some of the largest…

2 weeks ago

ufw Command in Linux: Manage Firewall Rules with Examples

ufw (Uncomplicated Firewall) sits on top of iptables (or nftables on newer systems) and replaces…

2 weeks ago

who Command in Linux: Show All Logged-In Users and Sessions

When you share a server with a team or investigate unexpected activity, the first question…

2 weeks ago