Bash Basics Series #2: Using Variables in Bash

In the first part of the Bash Basics Series, I briefly mentioned variables. It is time to take a detailed look at them in this chapter.

If you have ever done any kind of coding, you must be familiar with the term ‘variable’.

If not, think of a variable as a box that holds up information, and this information can be changed over time.

Let’s see about using them.

Using variables in Bash shell

Open a terminal and use initialize a variable with a random number 4:


So now you have a variable named var and its value is 4. Want to verify it? Access the value of a variable by adding $ before the variable name. It’s called parameter expansion.

[email protected]:~$ echo The value of var is $var
The value of var is 4


There must NOT be a space before or after = during variable initialization.

If you want, you can change the value to something else:

Using variables in shell

In Bash shell, a variable can be a number, character, or string (of characters including spaces).

Different variable types in Bash shell


Like other things in Linux, the variable names are also case-sensitive. They can consist of letters, numbers and the underscore “_”.

Using variables in Bash scripts

Did you notice that I didn’t run a shell script to show the variable examples? You can do a lot of things in the shell directly. When you close the terminal, those variables you created will no longer exist.

However, your distro usually adds global variables so that they can be accessed across all of your scripts and shells.

Let’s write some scripts again. You should have the script directory created earlier but this command will take care of that in either case:

mkdir -p bash_scripts && cd bash_scripts

Basically, it will create bash_scripts directory if it doesn’t exist already and then switch to that directory.

Here. let’s create a new script named with the following text.

#!/bin/bash echo knock, knock
echo "Who's there?"
echo "It's me, $USER"

Change the file permission and run the script. You learned it in the previous chapter.

Here’s what it produced for me:

Using global variable in Bahs script

Did you notice how it added my name to it automatically? That’s the magic of the global variable $USER that contains the username.

You may also notice that I used the ” sometimes with echo but not other times. That was deliberate. Quotes in bash have special meanings. They can be used to handle white spaces and other special characters. Let me show an example.

Handling spaces in variables

Let’s say you have to use a variable called greetings that has the value hello and welcome.

If you try initializing the variable like this:

greetings=Hello and Welcome

You’ll get an error like this:

Command 'and' not found, but can be installed with:
sudo apt install and

This is why you need to use either single quotes or double quotes:

greetings="Hello and Welcome"

And now you can use this variable as you want.

Using spaces in variable names in bash

Assign the command output to a variable

Yes! You can store the output of a command in a variable and use them in your script. It’s called command substitution.


Here’s an example:

[email protected]:~$ today=$(date +%D)
[email protected]:~$ echo "Today's date is $today"
Today's date is 06/19/23
[email protected]:~$ 
Command substitution in bash

The older syntax used backticks instead of $() for the command substitution. While it may still work, you should use the new, recommended notation.


Variables change the value unless you declare a ‘constant’ variable like this: readonly pi=3.14. In this case, the value of variable pi cannot be changed because it was declared readlonly.

🏋️ Exercise time

Time to practice what you learned. Here are some exercise to test your learning.

Exercise 1: Write a bash script that prints your username, present working directory, home directory and default shell in the following format.

Hello, there
My name is XYZ
My current location is XYZ
My home directory is XYZ
My default shell is XYZ

Hint: Use global variables $USER, $PWD, $HOME and $SHELL.

Exercise 2: Write a bash script that declares a variable named price. Use it to get the output in the following format:

Today's price is $X
Tomorrow's price is $Y

Where X is the initial value of the variable price and it is doubled for tomorrow’s prices.

Hint: Use / to escape the special character $.

The answers to the exercises can be discussed in this dedicated thread in the community.

Practice Exercise in Bash Basics Series #2: Using Variables in BashIf you are following the Bash Basics series on It’s FOSS, you can submit and discuss the answers to the exercise at the end of the chapter: Fellow experienced members are encouraged to provide their feedback to new members. Do note that there could be more than one answer to a given problem.

In the next chapter of the Bash Basics Series, you’ll see how to make the bash scripts interactive by passing arguments and accepting user inputs.

Similar Posts