Saturday 15 August 2015

Shell Programs

Shell Sample Programs


1. WAS,to display list of files, the current working user‘s list and present working directory
$vi sp1
ls -x
who
pwd


:wq(save and quit)
Execution of shell program:
Sh is the command to execute bourn shell programs

eg: $sh sp1
or
$chmod 744 sp1

$./sp1

2)WAS, to display address

$vi sp2

echo “Multics Scripting Institute”
echo “No:109, 1st floor”
echo “Eurekha court,”
echo “4th floor”
echo “Ameerpet,”
echo “Hyderabad”

:wq(save and quit)

3)WAS, to  count no of users are currently logged into the system

$vi sp3.sh

echo “There are `who |  wc  -l ` users”

:wq(save and quit)

4)WAS, to read name and display

$vi  sp4.sh

echo “what is your name?”
read name
echo “hello $name”

:wq(save and quit)

Note :- read is command to read variable form the user .Read command reads value form keyboard up to space or enter key.
Eg1: read a
Eg 2: read a b--c

5)WAS, to read 2 number and display

Vi sp5

echo “enter 2 numb:\c”
read a b
echo “your numbers are $a and $b

:wq(save and quit)

OPERATORS:

1 .Arithmetic operators
2. Relational operators
             a. Numeric comparison operators
             b. String comparison operators
3. Logical operators


1. Arithmetic Operators
Operator                                                             Meaning
+                                                                             Sum
-                                                                       Difference
*                                                                             Product
/                                                                              Division
%                                                                            Modulus division

2. Numeric comparison operator
Operator                                                             Meaning
-gt                                                                          greater than
-ge                                                                         greater than equal to
-lt                                                                            less than
-le                                                                           less than or equal to
-eq                                                                         equal to
-ne                                                                         not equal to

3. String Comparison Operators
Operator                                                             Meaning
 >                                                                            Greater than
<                                                                             Less than
=                                                                             Equal to
!=                                                                            Not equal to

4.Logical Operators
Operator                                                             Meaning
-a                                                                            Logical AND
-o                                                                            Logical OR
!                                                                              logical NOT

5.Assignment operator                                 =

In UNIX for each and every operator, note that there should be space before and after operators.
If we don’t give space for “=” operator it can be consider as assignment else string comparison operator

6)WAS, to read 2 float numbers and display sum, difference, product and division

$vi sp7
echo “enter 2 float numbers” read a b
c=`echo $a + $b I bc`
 echo “a+b=$c”

7)WAS, to read 2 numbers an d display sum, difference, product and division

visp6

echo “enter 2 numbers”
read a b
c=`expr $a + Sb`
echo “a+b$c”
c=`expr $a - $b`
echo “a-b=$c”
c=`expr $a \* $b`
echo “a*b=$a”
c=`expr $a / $b`
echo “alb=$c”

:wq(save and quit)

Note: expr is the command to evaluating arithmetic expressions. But expr is capable of carring out only integer arithmetic.

....WAS, to read 2 float number and display Sum, difference, product and division

$vi sp7

echo “enter 2 float numbers”
read a b
c=`echo $a+$b | bc`
echo”a+b=$c”
c=`echo.$a - $b | bc`
echo “a-b=$c”
c=`echo $a \* $b bc`
echo “a*b=$a”
c=`echo $a / $b | bc`
echo “alb=$c”

:wq(save and quit)


CONTROL STATEMENTS:

There are four types of control instructions in shell. They-are:

1. Sequence Control Instruction
2. Selection or Decision Control Instructions
3. Repetition or Loop Control Instruction
4. Case Control Instruction

The sequence control instruction ensures that the instructions are executed in the same order in which they appear in the program. Decision and case control instructions allows the computer to take a decision as to which instruction is to be executed next. The loop control instruction helps computer to executer group of statements repeatedly.

Decision Control Statement
1. if —then-fl statement
2. if-then-else-if statement
3. if-then-elif-fi statement
4. case-esac statement

1.if-then-fi statement
Syntax:
if control command
…………..
…………
…………..

fi
The if statement of UNIX is concerned with the the exit status of a command. The exit status indicates whether the command was executed successfully or not. The exit status of a command is 0 if it has been executed successfully, 1 otherwise.

8) WAS, to change directory

$vi sp8

echo enter directory name
read  dname
if  cd  $dname
then
echo “changed to $dnarne”
pwd
fi

:wq(save and quit)

2.Jf-then-else-fi Statement
syntax
if condition
then
………
………
else
………
………

fi
The exit status of the control command is 0 then it executes then statement otherwise it executes else statements.


9) WAS, to copy a file

$vi sp9
echo enter source filename and target file and name
read  src  trg
if  cp  $src  $trg
then
echo   file copied successfully
else
echo   failed to copy the file
fi

:wq(save and quit)

10) WAS,  to search string in a file

$vi sp10.sh

echo “enter a file name”
read  fname
echo “enter to string to search”
read str
if  grep $str  $fname
then
echo “$str is found in the file $file”
else
echo “$str is not found in $fname”
fi

:wq(save and quit)

11)WAS, to find greatest number of 2 numbers

vi sp 11
echo enter two numbers
read a b
if  [ $a –gt  $b ]
then
echo $a is the greatest value
else
echo $b is the greatest value

fi

:wq(save and quit)

12) WAS, to check given no is even or odd

$vi sp12

echo enter a number
read n
if [  `expr $n % 2`  -eq  0 ]
then
echo $n is even number
else
echo $n is odd number
fi

:wq(save and quit)

The Test Command

If constructs depends upon whether or not the condition results into true or not.
If constructs are generally used in conjunction with the test command. The test command helps us to find the contents of a variable, the number of variables and the type of file or kind of file permission. The test command returns an exit status after evaluating the condition.

Syntax: -
If test condition
Then
Commands
Else
Commands
fi

13) WAS, to check how many users working on the system

$vi  sp13

total=`who | wc –l`
if  [  $total  -eq  1 ]
then
echo “you are the only user working…
else
echo “there are $total user working…
fi

:wq(save and quit)

14)  WAS,  to check given number is +ve or –ve number

$vi sp14

echo “enter a number”
read num
if  test  $nurn  -gt  0
then
echo “$num is +ve number” else
echo “$num is —ve number”
fi

;wq(save and quit)

15)  WAS, to find student result

4vispl5

echo “enter three subject marks:”
read ml m2 m3
if  [  $ml  -ge  40  ]
then
if  [  $m3 -gt  40 ]
then
if  [  $m3  –gt  40  ]
then
echo “PASS”
else
echo “FAIL”
fi
else
echo “FAIL”
fi
else
echo “FAIL’
fi
:wq(save and qut)

16)WAS, to print greeting

$vi spl6

hour=`date | cut  -c 12,33`

if   [  $hour  —ge   0  —a   $hour  —le   11]
then
echo “Good Morning”
else

if  [  $hour  -ge  12  -a  $hour -Ie 17  ]
then
echo “Good Afternoon”
else
echo “Good Evening”
fi
fi

:wq(save and quit)

File Test Commands
The test command has several options for checking the status of a file.
-e            True if the file exist.
 -s           True if the file exists and has a size greater  than 0
-f             True if the file exists and is not directory
-d            True if the file exists and is a directory file
-c            True if the file exists and character special file
-b            True if the file exists is a block special file
-r             True if the file exists and have a read permission to it
-x            True if the file exists and have a execute permission to it
-w           True if the file exists and have a write permission to it


17) WAS, to  check for ordinary file and display it contents
$vi sp17

echo enter a file name
read fname
if test  -f  $fname
then
cat  $fname
else
echo “given file is not ordinary file”

:wq(save and quit)

18) WAS, to  check give file is ordinary or directory file

$vi sp18

echo “enter a file name:”
read fnarne
if  [ -f  $fname ]
then
cat  $fname
elif  [  -d  $fname   ]
then
ls
else
echo $fname is not file and not a directory
fi

:wq(save and quit)

19) WAS, to check read permission

$vi sp19

echo “enter a file name
read  fname
if  [  -r  $fname  ]
then
cat  $fname
else
chmod  u+r  $fname
cat  $fname
fi

:wq(save and quit)

20) WAS, to append data to the file

$vi sp20

echo “enter a filename”
read  $fname
if  [  -f  $fname  ]
then
if [  -w   $fname  ]
then
echo “enter data to file to stop press ctrl+d...”
cat  >>$fnarne
else
chmod  u+w   $fname
echo “enter data to file to stop press ctrl+d…”
cat  >>$fname
fi
else
echo “enter data to file to stop press ctrl+d…”
cat  >>$fname

fi
:wq(save and quit)

String Test Commands

Condition                            Meaning
String 1 = string2               True if the strings are same
Stringi != string2               True if the strings are different
-n string 1                            True if the length of string is greater than 0
-z string                                True if the length of the string is zero

21) WAS, to compare two strings

$vi  sp21.sh

echo “enter first string:”
read str1
echo “enter second string:”
read str2
if test $str1  =  $str2
then
echo “both strings are equal”
else
echo “strings are not equal”
fi

:wq(save and quit)

22) WAS, to check given string is empty or not

$vi sp22

echo enter a string
read str
if  [  -z  $str  ]
then
echo “string is empty”
else
echo ‘given string is not empty”
fi

:wq(save and quit)


Case Control Statement

Syntax -
Case value in
Choicel)
…………..
…………..
‘’
‘’

cho ice2)
………
………
‘’
‘’
choice3)
………
………
‘’
‘’
esac

Firstly, the expression following the case keyword is evaluated. The value that it yields is then matched, one by one against the potential choices (choice1, choice2 and choice3 in the above form). When a match is found, the shell executes all commands in that case up to;;. This pair of semicolons placed at the end of each choice is necessary.

23)Sarnple program for case

$vi sp23

echo “enter a number between 1 to 4”\c”
read num
case $nurn in
1)echo “you entered 1” ;;

2)echo “you entered 2” ;;

3)echo “you entered 3” ;;

4)echo “you entered 4” ;;

*)echo “invalid number, enter number between 1to4 only” ;;

esac

:wq(save and quit)

24) WAS, to check given character is upper case alphabet or lower case alphabet or digit or special character

$vi sp24

echo “enter a single character”
read ch
case  $ch  in
[a-z])echo   “you entered a small case alphabet” ;;

[A-Z])echo   “you entered a upper case alphabet” ;;

[0-9])echo  “you entered a digit” ;;

?)echo  “you entered a special character”;;


*)echo “you entered more than one character”;;

esac
:wq(save and quit)

25)WAS, to display file conten ts or write on to file or execute based on user choice

$vi sp25

echo “enter a file name:\c”
read   fname
echo            “Main Menu”
echo  “======================”
echo  “r. read mode”
echo  “w.write mode”
echo   “x. execute mode”
echo   “enter mode:\c”
read  mode
case  $mode  in
r)
if  [ -f $fname  -a   -r  $fname  ]
then
cat  $fname
fi
;;
w)
if  [ -f  $fname   -a   -w  $fname  ]
then
echo “enter data to file at end press ctrl+d:”
cat   >$fname
fi
;;
x)
if  [  -f  $fname   -a  -x  $fname  ]
then
chmod  u+x  $fname
$fname
fi
;;
*)echo  ”you entered invalid mode…”
;;

esac


:wq(save and quit)

Looping Control Statements
A loop involves repeating some portion of the program either a specified no of times of times or until a particular condition is being satisfied. There are three methods by way of which we can repeat a part of a program. There are

1) Using a while statement
2) Using a until statement’
3) Using a for statement


While Statement
Syntax

while [condition j
do
……………
……………
……………
done

The statements within the while loop would keep on getting executed till the condition is true. When the condition is false, the control transfers to after done statement.

27) WAS, to display numbers 1 to 10

$visp27

echo “the number form 1 to 10 are:”
i=1
while  [  $i  -Ie  10 ]
do
echo  $i
i=`expr  $i  +  1`
done

:wq(save and quit)


28) WAS, to copy file from root to user directory

$vi sp28

flag=1
while  [  $flag   -eq   1  ]
do
echo “enter a filename”
read  fname
cp  $fname    /usr/sv/$fname
echo “$fname copied………..”
echo “do u wish to continue [1 -yes/0-no]:  ”
read flag
done


:wq(save and quit)

The Break Statement
When the keyword break is encountered inside any loop, control automatically passes to the first statement after the loop.
The Continue Statement
When the keyword continues is encountered inside any loop, control automatically passes to the beginning of the loop.
29)WAS, to display file contents if file existing

$vi sp29
x0
while  test  $x=0
do
echo “enter a file name:\c”
read  fname
if   test  ! –f  $fname
then
echo “$fname is not found………..”
continue
else
break
fi
done
cat $fnarne | more

:wq(save and quit)

The Until Loop
Syntax
until [condition j
do
……………
……………
……………
done

The statements within the until loop keep on getting executed till the condition is false. When the condition is true the control transfers to after done statement.

30) WAS, to print numbers 1 to 10

$vi sp3O

i=1
until  [  $i  -gt  10  ]
do
echo  $i
i=`expr$i+1`
done

:wq(save and quit)

The True and False Command
To execute the loop an infinite no of times.

31) Write sample program for true command

$vi sp3l

while true
do
clear
banner “hello”
sleep 1
clear
banner “Tecnosoft”
sleep 1
done

:wq(save and quit)

Note: The above program executes continuous to stop execution press ctrl + break

32) Write sample program for false command

$vi sp32

until  false
do
clear
banner “hello”
sleep 1
clear
banner “Tecnosoft”
sleep 1
done

:wq(save and quit)
The Sleep Command
The sleep command stops the execution of the program the specified no of seconds.

The For Loop
Syntax

For variable in va1ue1value2 value3 . ... . value
do
………………….
……………….
done
The for allows us to specify a list of values which the variable in the loop can take. The loop is then executed for each value mentioned in the list.

33) WAS, to demonstrate for loop

$vi sp33

for i in 1 2 3 4 5
do
echo $i
done

:wq(save and quit)

34) WAS, to demonstrate for loop

$vi sp34

for  i  in Multics is a training institute.
do
echo $i
done

:wq

35) WAS,to display all files in current directory

$vi sp35

for  i in *
do
if  test   -f  $i   -a   -r  $i
then
cat $i |more
sleep 1
clear
fi
done

:wq(save and quit)

36)WAS, to display all sub-directories in the current directory

$vi sp36

for I in*
do
if [  -d  $i  ]
then
echo $i
fi
done

:wq(save and quit)

Positional Parameters
When the arguments are passed with the command line, shell puts each word on the command line into special variables. For this, the shell uses something called as “positional parameters;. These can be thought of as variables defined by the shell, They are nine in number, named $1 through $9.

Consider the following statement, where sp37 is any executable shell script file and the remaining are the arguments
$sp37 Multics is a computer training and development institute

On entering such command, each word is automatically stored serially in the positional parameters. $1 through $9

37) write program to copy a file using positional parameters

vi sp37

if  cp  $1  $2 -
then
echo “file copied successfully”
else
echo “failed to copy”
fi

:wq(save and quit)

$chmod 744 sp37

$sp37 al a2
in above command it passes al to $1 and a2 into $2, then it copies al
contents to a2.

Special Characters
$*, $@                   Contains entire string of arguments

$# -                        Contains the no for argument specified in the command

$?                           Holds the value of exit status of the previous command

$$                           Holds user parent id




No comments:

Post a Comment