Showing posts with label Loops in shell script. Show all posts
Showing posts with label Loops in shell script. Show all posts

Thursday, July 31, 2014

Unix Shell Programming Basics

Shell Program
A shell program or shell script is a collection of Shell commands to perform a particular task .

Examples:
  • Unix Shell scripts (ksh, csh, bash, sh)
  • 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
  • Write a shell script to print your name and student id on screen using variables? (1 Mins) 
  • Write a shell script to swap 2 numbers using temporary variable? (2 Mins)

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
  1. Write a shell script to check read number is prime or not? (use for / while loop) 
  2. 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) 
  3. 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) 
  4. Write a shell script to read 10 values into an array and print them on screen using array index. 
  5. Write a shell script to read 5 values into array1 and 5 values into array2 and concatenate 
    both arrays store in array3. 
  6.  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. 
  7. 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. 
  8. 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 
  9. 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.