A variable is a character string where we stores a value. The value assigned could be a number, text, filename, device, or any other type of data.

A variable is nothing more than a pointer to the actual data stored. The shell enables you to create, assign, and delete variables.Their are some predefined convention as follows to define variables.

Variable Names

The name of a variable can contain only letters (a to z or A to Z), numbers ( 0 to 9) or the underscore character ( _).

Unix shell variables should have their names in UPPERCASE.

Below are the examples are valid variable names −

_SAMPLE
RANDOM_A
V_1
VAR_2
VARIABLE_3

Following are the examples of invalid variable names −

2_TEMP  -   Starts With numeric
-VAR    -   Starts with &contains -
VARABLE1-VAR2    -   Contains -
VAR_A!  -    Contains !

Why a variable cannot use other characters such as !*, or  is that these characters have a special meaning for the shell?

The special character other than “_” is reversed in shell for other uses.

Defining Variables

Variables are defined with an = sing. The left part contains the name of the variable and right part contains the value of the variable.

Syntax   :   variable_name=variable_value

For example −

NAME="Zara Ali"

The above example defines the variable NAME and assigns the value “Zara Ali” to it. Variables of this type are called scalar variables. A scalar variable can hold only one value at a time.

Shell enables you to store any value you want in a variable. For example −

VAR1="Zara Ali"
VAR2=100

Accessing Values

To access the value stored in a variable, prefix its name with the dollar sign ($) −

For example, the following script will access the value of defined variable NAME and print it on STDOUT

#!/bin/sh

NAME="Zara Ali"
echo $NAME

The above script will produce the following value −

Zara Ali

Read-only Variables

Shell provides a way to mark variables as read-only by using the read-only command. After a variable is marked read-only, its value cannot be changed.

For example, the following script generates an error while trying to change the value of NAME −

#!/bin/sh NAME="Zara Ali" readonly NAME NAME="Qadiri"

The above script will generate the following result −

/bin/sh: NAME: This variable is read only.

Unsetting Variables

Unsetting or deleting a variable directs the shell to remove the variable from the list of variables that it tracks. Once you unset a variable, you cannot access the stored value in the variable.

Following is the syntax to unset a defined variable using the unset command −

unset variable_name

The above command unsets the value of a defined variable. Here is a simple example that demonstrates how the command works −

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

The above example does not print anything. You cannot use the unset command to unset variables that are marked readonly.