Variables are nothing but a placeholder for storing some value or data. Referencing the value of the variable is called variable referencing. Next, we will learn about using variables in shell scripting.
How to assign value to a variable?
The synatx for using a variable in shell scripting is simple
Remember: Never give space before and after the equal-to (=) sign or else the script will throw an error during execution.
var=hello echo "Value of the variable is $var"
The variable var is assigned the value hello. Next, echo command prints the value if the variable var. Note hoe we use the ‘$’ sign with the variable name. Whenever you want to use the value of the variable always use the $ sign with the variable name
If the $ sign is not used with the variable name then the script will assume you want to work on the variable name and not its value. Modify the above script as below and observe the difference
var=hello echo "Value of the variable is var"
Do Variables in Shell Scripting has data types?
No, variables in shell scripting has no data types i.e., they are “untyped”. All variables are treated as string by default but depending upon the context they can be used to perform arithmetic and comparison operations too.
#script1.sh var1="hello world" var2=20 var3=3+3 echo "Value if var1 is: $var1" echo "Performing Addition: $(($var2+5))" echo "Mixed value in var3: $var3"
Special Variable Types
- Local variables
- Environmental Variables
- Positional Parameters
Variables visible only within a code block or function. For example the variables used in the above scripts are local variables
Variables that affect the behaviour of the shell and user interface. For example, HOME, SHELL, PATH etc.
#script2.sh: Script to use environmental variables echo "The user home directory is : $HOME" echo "The shell used by your system is : $SHELL"
Environmental variables are generally declared in Uppercase. Use the env or printenv command to view the list of all environmental variables along with their values.
Positional Parameters / Command Line arguments
Arguments passed to the script from the command line are called command line arguments. For example,
$ls f1 f2
here the file names f1 and f2 are command line arguments. Similarly,
$touch xyz xyz1 xyz2
are three command line arguments passed with the touch command. The value of these command line arguments is stored as below:
- $0 – stores the name of the script
- $1 – stores the first argument
- $2 – stores the second argument
- $3 – stores the third argument
- $# – stores the total number of argument
- $* – stores the value of all argument
#script3.sh: Script to use command line arguments echo "The name of the script is: $0" echo "The first argument passed is: $1" echo "The second argument passed is: $2" echo "Total number of arguments passed are: $#" echo "The value of each argument is: $*"
$chmod u+x script3.sh ./script3.sh first 2nd
Solved Questions on Using Variables in Shell Scripting
Q1. Write a shell script to create a file whose name is specified by the user. Also, display a confirmation message
echo "enter file name" read f_name touch $f_name echo "$f_name is created"
Q2. Write a shell script to create a file whose name is specified by the user at the command line. Also, display a confirmation message
touch $1 echo "$f_name is created"
Note: while you run the above script do not forget to specify the name as the first argument. For example, if your script name is xyz.sh then run it as
This will create the file date.txt
Practice Questions on Using Variables in Shell Scripting
Q1. Write a shell script to create a file and a directory. The file name should be passed as first argument and the directory name should be passed as second argument.
Q2. Write a shell script that displays the total number of arguments passed and the value of each argument.
Next if-else statement