Shell
Program
A
shell program or shell script is a collection of Shell commands to
perform a particular task .
Examples:
Python
perl
VBScript
Java
Script
Apple
Script etc.
Uses
of Shell Programming
To
combine lengthy and repetitive sequences
of commands into a single, simple command.
To
create new commands using combinations of pre-existing commands.
To
automate the process of setting up and running applications.
Shell
Program structure
Any
text editor can be used to type shell program.
#!
/bin/sh
#
this is a comment
body
of program
exit
0
#!
/bin/sh
indicates to other users to run the script using /bin/sh
#!
/bin/sh
is called as shebang
or hashbang
Comment
line starts with #
exit
0
represents the end of script
Steps
involved in Shell Script
Step-1:
Type shell program in a text file
Step-2:
Save file with .sh extension
Example:
FileName.sh
Step-3:
Make FileName.sh Executable for all users using 'chmod
755 FileName.sh'
Step-4:
Run script using ./FileName.sh
Shell
Script Examples
#!
/bin/sh
#Script
Name: Run.sh
#Purpose:
to run hello.c file
gcc
-o hello hello.c
./hello
exit
0
#!
/bin/sh
#Script
Name: UpdateUpgrade.sh
#Purpose:
To update & upgrade debian #based system
apt-get
update
apt-get
upgrade
reboot
exit
0
Note:
You need super
user privileges to run UpdateUpgrade.sh script
Assignments-1
Write a shell script to display
your name on screen (Time: 1 Min)
Write a shell script to remove
CDAC directory, whose absolute path is /home/reniguntla/CDAC (Time:
2 Min)
Write
a shell script to display all lines contains “sh”
in file UpdateUpgrade.sh (Time: 2 Min)
Shell
Script Variables
By deafault all variables in
shell script are strings.
#!
/bin/sh
#Script
Name: Variable.sh
#Purpose:
To demonstrate variables
x=Hello
echo
"$x"
y="Hi"
echo
"$y"
z="How
are you?"
echo
"$z"
exit
0
Output:
Hello
Hi
How are you?
Quoting
of variables
#!
/bin/sh
#Script
Name: Quote.sh
#Script
purpose: To demonstrate variable with #quotations
x=Hello
echo
$x
x=”Hello”
echo
$x
x=”Hello
Mr.L”
echo
$x
echo
'$x'
exit
0
OutPut:
Hello
Hello
Hello
Mr.L
$x
Assignments-2
Shell
Script Binary Operators
Shell
Script Binary Operators Example
#!/bin/sh
#Script
Name: BinaryOp.sh
#Purpose:
Demonstration of binary operators
a=10
b=20
val=`expr
$a + $b`
echo
"a + b : $val"
val=`expr
$a - $b`
echo
"a - b : $val"
val=`expr
$a \* $b`
echo
"a * b : $val"
val=`expr
$b / $a`
echo
"b / a : $val"
val=`expr
$b % $a`
echo
"b % a : $val"
exit
0
OutPut:
a+b:30
a-b:-10
a*b:200
b/a:2
b%a:0
Shell
Script Relational Operators
Shell
Script Boolean Operators
Note:
Explore string operators
yourself
Shell
Script File Test Operators
Reading
Input From User
To
read input we use read
command
#!
/bin/sh
#Script
Name: InputRead.sh
#Purpose:
To demonstrate read command
echo
“Enter your name?”
read
MyName
echo
“Your name is $MyName”
exit
0
OutPut: Enter your name
?
Reniguntla
Your name is Reniguntla
Assignments-3
Write a shell script to read
your name, roll number, marks in 4 subjects. Display your name, roll
number, average of 4 subjects & percentage on screen. (3 Min)
Shell
Script Parameters
All command line parameters /
arguments of a shell script can be accessed via $1, $2, $3,..., $9,
${10}, ${11}...
$# holds the number of
parameters passed
$@ Holds A list of all
parameters in a single variable
$* also holds all parameters
$0 holds the name of the script
Shell
Script Parameters Example
#!/bin/sh
#Script
Name: ScriptParam.sh
#Purpose:
Script parameters demo
echo
"There are $# parameters"
echo
"The parameters are $@"
echo
"The script name is $0"
echo
"The first parameter is $1"
echo
"The second parameter is $2"
exit
0
OutPut: /.ScriptParam.sh
reni sam
There
are 2 parameters
The
parameters are reni sam
The
script name is ./ScriptParam.sh
The
first parameter is reni
The
second parameter is sam
Assignments-4
Write a shell script to delete
file1.txt & to give RWX permissions to all users on file2.txt.
Take file1.txt and file2.txt as shell script parameters. (3 Min)
If-then-fi
Syntax:
if [ condition ]
then
Statements
fi
Example:
#!
/bin/sh
#Scriptname:
ifthenfi.sh
#purpose:
To demonstrate if-then-fi
echo
"Is it morning? Please answer yes(1) or no(0)"
read response
if
[ $response -eq 1 ]
then
echo
“good morning”
fi
exit
0
if-then-else-if
Syntax:
if [ condition ]
then
Statements
else
Statements
fi
Example:
#!
/bin/sh
#ScriptName:
Ifthenelsefi.sh
#purpose:
To demonstrate if-then-else-fi
if
[ -d /home/faculty ]
then
echo
“/home/faculty is a directory”
else
echo
“/home/faculty is not a directory”
fi
exit
0
Assignments-5
Write a shell script to check
whether read number is even or odd? (Time: 2
Min)
Write a shell script to check
given file(take this a script parameter) is plain file or directory.
(Time: 2 Min)
Case
Statement
Syntax:
case
variable in
Pattern
) statements ;;
Pattern
) statements ;;
......
esac
Example:
#!
/bin/sh
#ScriptName:
Case.sh
#purpose:
To demonstrate case statement
echo
“is it morning? Please anser yes or no”
read
timeofday
case
“$timeofday” in
yes
| Y | y | YES ) echo “Hi”
echo “good morning” ;;
yo
| N | n | NO ) echo “Hi”
echo “Good After Noon” ;;
*
) echo “sorry answer not recognized” ;;
esac
exit
0
For
Loop
Syntax:
for variable in values
do
Statements
done
Example:
#!
/bin/sh
#ScriptName:
For.sh
#Purpose:
To demonstrate for loop
for
file in $(ls *.sh)
do
echo “$file”
done
exit
0
Note:
You can use loop controls break, continue in for loop with a value.
While
loop
Syntax:
while [ condition ]
do
Statements
done
Example:
#!
/bin/sh
#ScriptName:
While.sh
#Purpose:
To demonstrate While loop
echo
"enter password:"
read
password
while
[ "$password" != "secret" ]
do
echo
"try again"
read
password
done
exit
0
Note:
You can use loop controls break, continue in while loop with a value.
Note:
Explore do-while loop for yourself
Arrays
in Shell Script
An array variable can hold
multiple values at the same time and each value can access using
index value.
Example:
#!/bin/sh
#ScriptName: Array.sh
#Purpose: To demonstrate Array in shell script
name[0]="Reni"
name[1]="Sam"
name[2]="Ashok"
name[3]="Mahesh"
#Displaying array item based on index number
echo "First Method: ${name[0]}"
echo "First Method: ${name[2]}"
# Different method to display all items in array
echo "First Method: ${name[*]}"
echo "Second Method: ${name[@]}"
exit 0
Function with No parameters & No return
#!/bin/sh
#ScriptName:Function1.sh
#Purpose: To demonstrate function with no #parameters & no return
# Function Hi definition
Hipgdst () {
echo "Hi PGDST"
}
# Invoking function Hi
Hipgdst
exit 0
Function with Parameters & Return Value
#!/bin/sh
#ScriptName:Function2.sh
#Purpose: To demonstrate function with parameters & return val
# Function add definition
add () {
return `expr $1 + $2`
}
# Reading 2 nums for adding through func
echo "enter first number"
read a
echo "enter second number"
read b
# Invoking function add with a & b as #parameters
add $a $b
# Capture value returned by last command
sumval=$?
echo "Return value is $sumval"
exit 0
Shell Script Assignments
Write a shell script to check read number is prime or not? (use for / while loop)
Write a shell script to determine whether the given word begins with lower case
or upper-case letter or whether it is starting with a special character using case statement. (use case)
Write a shell script to read contents of a file (which has been provided
as a script parameter) line by line and display on screen. (use while loop)
Write a shell script to read 10 values into an array and print them on screen using array index.
Write a shell script to read 5 values into array1 and 5 values into array2 and concatenate
both arrays store in array3.
Write shell script functions to calculate +, -, *, / , % of two numbers which
are provided as parameters to the functions and and each function must return result.
Call all those functions and print return values.
Write a single shell script to do the following
a. Create a file profile.txt
b. Change permissions of profile.txt to _rwxr_xr_x
c. Read your name, e-mail id, roll number and write them to profile.txt
d. Read the contents of profile.txt using a loop and display on screen.
Write a single shell script to do the following
a. read a number
b. Define a function checkprime() which takes read number as parameter
& checks that number is prime or not & return the result.
c. Call checkprime() with parameters 12, 97, 111
d. Display the return values of above function calls on screen
Write a single shell script to
a. read a number N
b. read N numbers in to an array called array_all using loop
c. Navigate through array_all and check for even & odd numbers. Store
all even numbers in array even_array & odd numbers in array odd_array
d. display all even numbers then odd numbers on screen.