shell programming
TRANSCRIPT
SHELL PROGRAMMING
Ex.NO:2 AREA OF THE CIRCLE
Aim: To write a shell program to find the area of the circle.
procedure:
Step 1: Start the Process
Step 2: Read the radius
Step 3: Calculate the area.
Step 4: Print the Radius and Area
Step 5: Stop the process
Flow Chart:
Program
echo "Enter the radius of the circle"
read r
area=$(echo "scale=2; 3.14 * ($r * $r)" |bc )
echo "Radius of the circle $r"
echo "Area of the circle $area"
Output:
Enter the radius of the circle5Radius of the circle 5Area of the circle 78.50
Result : Thus the program to find the area of the circle is executed successfully.
Ex.NO:3. CALCULATING GROSS SALARY OF AN EMPLOYEE
Aim: To write a shell program to calculate Gross salary of an employee.
Procedure:
step1: Start the process
step2: Read the basic
step3: calculate da and hra
step4: calculate the gross
step5: Print the Gross salary
step6: Stop the process
Flow Chart:
Program:
echo "Basic Salary"
read basic
da=`echo $basic \* 40/100 |bc`
hra=`echo $basic \* 20/100 |bc`
gross=`echo $basicv + $da + $hra |bc`
echo "Grosssalary=Rs.$gross"
Output:
[dha@localhost ~]$ sh sal.sh
Basic Salary 5000 Grosssalary=Rs.8000
Result: Thus the program to find the gross salary of an employee is executed successfully.
Ex.NO:4 UPPER TO LOWER AND LOWER TO UPPER USING CASE STATEMENT
Aim:To Write a Shell Program to convert Upper to lower and lower to Upper using ‘case’
statements.
Algorithm:
Step 1: Start the process
Step 2: Read the choice
Step 3: Read the file to be converted
Step 4: Convert the case using tr [:lower:] [:upper:]
Step 5: Print the result
Step 6: Stop the process
Flow Chart:
Start
Display menu 1. Lower to upper2. Upper to lower
Choice
Case?
Choice
Program:
echo "Menu"
echo "1.Lower->Upper"
echo "2.Upper->Lower"
echo "Enter your Choice"
read ch
case $ch in
1)echo "Enter the file name"
read f
tr [:lower:] [:upper:]<$f;;
2)echo "Enter the file name"
read f
tr [:upper:] [:lower:]<$f;;
esac
Output:
[dha@localhost ~]$ sh conver.sh
Choice Choice
End
Menu
1.Lower->Upper
2.Upper->Lower
Enter your Choice
1
Enter the file name
f1
HAI
HELLO
[dha@localhost ~]$ sh conver.sh
Menu
1.Lower->Upper
2.Upper->Lower
Enter your Choice
2
Enter the file name
f1
hai
hello
Result:Thus the Shell Program to convert Upper to Lower and Lower to Upper using ‘case’
statements is executed successfully.
Ex.NO:5 ARITHMETIC OPERATIONS USING CASE STATEMENTS
Aim:To Write a Shell Program to perform Arithmetic Operations using ‘case’ statements
Algorithm:
Step 1: Start the process
Step 2: Read two numbers
Step 3: Read the choice
Step 4: Perform the arithmetic Operations
Step 5: Print the result
Step 6: Stop the process.
Flow Chart
No
Start
Read the limilt
Initialize a=-1, b=1, i=1
While (i<=n)
Yes
Program:
echo "A Simple Calculator"
echo "Enter 1 for Addition, 2 for Subtraction,\n"
echo "3 for Multiplication, 4 for Division and 5 for Exit\n"
echo "Enter Two Numbers"
read a b
echo "Enter The Choice of Operation"
read choice
case $choice in
1) res=`expr $a + $b`;;
2) res=`expr $a - $b`;;
3) res=`expr $a * $b`;;
4) res=`expr $a / $b`;;
5) exit;;
esac
echo "Result= $res"
c=a+b
Print c
a=b b=c
i=i+1
Stop
Output:
[dha@localhost ~]$ sh case.sh
A Simple Calculator
Enter 1 for Addition, 2 for Subtraction,\n
3 for Multiplication, 4 for Division and 5 for Exit\n
Enter Two Numbers
7 3
Enter The Choice of Operation
2
Result= 4
Result : Thus the Arithmetic operations using case is executed successfully.
Ex.NO:6 POSITIVE OR NEGATIVE OR ZERO
Aim:
To Write a Shell Program to find the given number is Positive or Negative or Zero using ‘if’
condition
Algorithm:
Step1: Start the process
Step2: Read the number.
Step3: if number is greater than 0
a. Number is positive
Else if number is lesser than 0
b. Number is negative
Else
c. Number is Zero
Step4: Print the result.
Step5: Stop the process
Flow Chart
Program:
echo "Enter a Number" read n if test $n -gt 0 then echo "$n is Positive" elif test $n -lt 0 then echo "$n is Negative" else echo "Zero" fi
Output:-
[dha@localhost ~]$ sh pos.sh Enter a Number 4 4 is Positive
[dha@localhost ~]$ sh pos.sh Enter a Number 0
Zero [dha@localhost ~]$ sh pos.sh Enter a Number -3 -3 is Negative
Result : Thus the shell program to find the given number is positive or negative or is executed successfully.
Ex.NO:7 FIBONACCI SERIES
Aim:
To Write a Shell Program to find the Fibonacci Series of a given number using ‘while’ loop.
Procedure:
Step1: Start the process
Step2: Read the range
Step3: while i less than range.
c=a+b;
i=i+1;
Step4: print the result
Step 5: Stop the process.
Flow Chart
Program:
echo "program to generate Fibonacci Series" echo "enter the range" read n a=0 b=1 echo "Fibonacci series" echo $a echo $b i=2 while test $i -lt $n do c=`expr $a + $b` echo $c i=`expr $i + 1` a=$b b=$c done
Output:
[dha@localhost ~]$ sh fib.sh program to generate Fibonacci Series enter the range 7 Fibonacci series 0
1 1 2 3 5 8
Result: Thus the Shell Program to find the Fibonacci Series of a given number using ‘while’ is executed successfully.
Ex.NO:8 SORTING THE CONTENT OF THE FILE
Aim:
To Write a Shell Program to sort the given names in a file using ‘while’ loop.
Algorithm:Step 1: Start the process
Step 2: Get the File Name
Step 3: Read the Number of Names
Step 4: Read the Names
Step 5: Use the Sort function
Step 6: Display the result
Step 7: Stop the process
Flow Chart
Program:-
echo "Enter the file Name"
read x
echo "Enter the number of names"
read num
echo " Enter $num strings"
while test $num -gt 0
do
read name
echo $name>>$x
num=`expr $num - 1`
done
echo "the storted names are:"
sort $x
rm $x
Output
enter the file nameempnamesenter the number of names4enter 4 strings
srijalathaasmikeerthithe sorted names are:asmikeerthilathasrija
Result:
Thus the shell program to sort the names is executed successfully.
Ex.NO:9 FACTORIAL OF A GIVEN NUMBER
Aim:To Write a Shell Program to find the Factorial of a given number
Procedure:
Step 1: Start the process.
Step 2: Read the input
Step 3: if the input is 1
Then factorial is 1
else
Multiply the successive numbers.
Step 4: Display the Result
Step 5: Stop the process
Flow Chart
Program:
echo "FACTORIAL OF A NUMBER"
echo "Enter a number"
read n
i=1
f=1
if test $n -eq 0
then
echo "factorial is 1"
else
while test $i -le $n
do
f=`expr $f \* $i`
i=`expr $i + 1`
done
echo "Factorial is $f"
fi
Output:
[jp@TRPLinuxserver ~]$ sh fact.shFACTORIAL OF A NUMBEREnter a number5Factorial is 120
Results:
Thus the shell program to find the factorial of a given number is executed successfully.
Ex.NO:10 PRIME NUMBER
Aim:
To Write a Shell Program to check whether the given number is Prime number or not.
.
Procedure:
Step 1: Start the process
Step 2: Read the number.
Step 3: Calculate the number is divided by the same number without any
Remainder,then it is prime.
Step 4: Display the result
Step 5: Stop the process
Flow Chart
Program
i=2rem=1echo -e "Enter a number: \c"read numif [ $num -lt 2 ]; thenecho -e "$num is not prime\n"exit 0fiwhile [ $i -le `expr $num / 2` -a $rem -ne 0 ]; dorem=`expr $num % $i`i=`expr $i + 1`doneif [ $rem -ne 0 ]; thenecho -e "$num is prime\n"elseecho -e "$num is not prime\n"fi
Output
Enter a number: 55 is prime
Enter a number: 2222 is not prime
Results:
Thus the shell program to find the given number is prime executed successfully.
Ex.NO:11 MULTIPLICATION TABLE
Aim:
To Write a Shell Program to generate the Multiplication table of a given number using ‘for’ loop.
Algorithm:
Step 1: Start the process
Step 2: Read the number
Step 3: for 1 to 10
Multiply the number.
Step 4: Display the result
Step 5: Stop the process
Flow Chart
Program:
echo "Enter the Number" read n for i in 1 2 3 4 5 6 7 8 9 10 do m=`expr $n \* $i |bc` echo $i*$n=$m done
Output:
[dha@localhost ~]$ sh mul.sh Enter the Number 5 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45 10*5=50
Results:Thus the multiplication table is executed successfully.
Ex.NO:12 SEARCH THE CONTENT IN A FILE USING GREP
Aim:To write a shell program to search the contents of a file..
Algorithm:
1. Start the Program.
2. Enter the Pattern to be searched.
3. Enter the file to be searched..
4. If grep pname in fl name..
5. Pattern found.
6. Otherwise Pattern not found .
7. Stop the Program .
Flow chart :
Program:
echo "Enter the Pattern to be searched : \c"read pnameecho "Enter the file to be used : \c"read flnameecho "Searching for $pname from file $flname"if grep "$pname" $flname
thenecho "Pattern found"elseecho "Pattern not found"fi
Output:
[dha@localhost ~]$ sh grep.shEnter the Pattern to be searched : \creadEnter the file to be used : \csampleSearching for read from file samplereadPattern found
Result:
Thus the content are searched in the specified file and the result is displayed.
Ex.NO:13 USAGE OF AWK FILTER
Aim:
To Write a Shell Program to print the average pay for an employee using ‘awk’ filter.
Algorithm:
1. Star the Program.
2. Get the Employee abstract from the user.
3. Compile and execute the program.
4. Display the average basic pay.
5. Stop the Program.
Flow Chart:
Program: BEGIN { printf "\t\tEmployee abstract\n\n" } $6 > 7000 { kount++ ; tot += $6 printf "%3d %-20s %-12s %d\n" , kount,$2,$3,$6 }END { printf "\n\tThe average basic pay is %6d\n", tot/kount }
Output: Employee abstract
1 Mano Staff 15000 2 Asmi Lect 20000 3 Bala H.O.D 30000
The average basic pay is 21666
Result: Thus the Shell Program to print the average pay for an employee using ‘awk’ filter is executed successfully.
Ex.NO:14 SECURITY COMMAND
Aim:
To Write a Shell Program to change the Access Mode of a given File.
Algorithm:
1. Start the Program.
2. Enter the file name.
3. Enter the mode.
4. Enter the Permission Mode.
5. Enter the operation.
6. Display the Output.
7. Stop the Program.
Flow Chart:
.
Program:
echo "Enter the file name:"read fecho "Enter mode"read uecho "Enter Permission mode:"read pecho "Enter Operation"read ochmod $u$p$o $fls -l $f
read f
Enter the operation
chmod $u$p$o $f
STOP
Start START
Enter the File Name
Output:
Enter the file name:sampleEnter modegEnter Permission mode:=Enter Operationw-rw--w-r-- 1 22 Feb 26 18:15 sample
Result:
Thus the Shell Program to change the Access Mode of a given File is executed successfully.
C PROGRAMS
Ex.NO:15 PALINDROME
Aim:To Write a ‘C’ Program to check the given number is palindrome or not.
Algorithm:
Step 1: Start the Program.Step 2: Get the number from the user.Step 3: Split up the given number using model operation.Step 4: Store the split values in reverse order.Step 5: If both the numbers match, display as palindrome else display that it is
not a palindrome.Step 6: Stop the program
Flow Chart
Program:
#include<stdio.h>
main(){ int a,b=0,c=0,e; printf("Enter the number"); scanf("%d",&a); e=a; while(a>0) { b=a%10; c=c*10+b; a=a/10; } if(e==c) printf("\nPalindrome\n"); else printf("\nNot a Palildrome\n");
}
Output:
[jp@TRPLinuxserver ~]$ vi pali.c[jp@TRPLinuxserver ~]$ cc pali.c[jp@TRPLinuxserver ~]$ ./a.outEnter the number121Palindrome[jp@TRPLinuxserver ~]$ vi pali.c[jp@TRPLinuxserver ~]$ cc pali.c[jp@TRPLinuxserver ~]$ ./a.outEnter the number156Not a Palildrome
Result:
Thus the program to check the given number is palindrome or not executed successfully.
Ex.NO:16 SWAP THE GIVEN TWO VALUES USING FUNCTIONS
Aim:
To Write a ‘C’ Program to swap the given two values using ‘functions’.
Algorithm:
Step 1: Start the Program.Step 2: Get the two Values from the user.Step 3: Swap the a & b Values.Step 4: Display the After swapping Values.Step 5: Stop the program.
Flow Chart
Program:
#include<stdio.h> main() { void swap1(void); swap1(); } void swap1() { int a,b,c; printf("Enter two numbers:"); scanf("\n %d%d",&a,&b);
c=a;a=b;b=c;printf("The Numbers after swaping...%d%d\n",a,b); }
Output:
[dha@localhost ~]$ cc swap1.c [dha@localhost ~]$ ./a.out Enter two numbers:7 9 The Numbers after swaping...97
Result:
Thus the C program to swap the given number has been executed successfully.
Ex.NO:17 USAGE OF POINTERS
Aim:
To Write a ‘C’ program to add two numbers using Pointers..
Algorithm:
Step 1: Start the program.Step 2: Read the two numbers from the user a&b.Step 3: s=sum (&a,&b). Step 4: Display the sum of the Values.
Step 5: Stop the program
Flow Chart
Program:
#include<stdio.h>main(){int sum(int *,int *);int a,b,s;printf("\nEnter the value of a : ");scanf("%d",&a);printf("\nEnter the value of b : ");scanf("%d",&b);s=sum(&a,&b);printf("\nThe sum of the values are : %d\n",s);return;}int sum(int *x,int *y){return(*x+*y);}
Output:
[dha@localhost ~]$ cc poin.c [dha@localhost ~]$ ./a.out
Enter the value of a : 4
Enter the value of b : 9
The sum of the values are : 13
Result:
Thus the C program to print the value and address of a given number has been executed
successfully
Ex.NO:18 USAGE OF STRUCTURES
Aim:To Write a ‘C’ Program to print the Students Name, Marks using ‘Structure’.
Algorithm: Step 1: Start the Program.
Step 2: Get the number of Students from the user.Step 3: Enter the students Details.Step 4: Enter the Marks.Step 5: Display the Students Record.Step 6: Stop the program.
Flow Chart
Program:
#include<stdio.h> struct student { char name[10][10]; int rollno,m1,m2,m3,total;
}; void main() { int num,i,j; struct student s1[10]; printf("enter the number of students"); scanf("%d",&num); for(i=0;i<num;i++) { printf("Enter the roll number\n"); scanf("%d",&s1[i].rollno); printf("Enter the name \n"); scanf("%s",&s1[i].name); printf("Enter the mark1\n"); scanf("%d",&s1[i].m1); printf("Enter the mark2\n"); scanf("%d",&s1[i].m2); printf("Enter the mark3\n"); scanf("%d",&s1[i].m3); s1[i].total=s1[i].m1+s1[i].m2+s1[i].m3; } printf("The details of the mark list is as follows \n"); printf("\nRollno"); printf("\tname "); printf("\tmark1"); printf("\tmark2"); printf("\tmark3"); printf("\ttotal"); printf("\n"); for(i=0;i<num;i++) { printf("\n%d",s1[i].rollno); printf("\t%s",s1[i].name); printf("\t%d",s1[i].m1); printf("\t%d",s1[i].m2); printf("\t%d",s1[i].m3); s1[i].total=s1[i].m1+s1[i].m2+s1[i].m3; printf("\t%d",s1[i].total); } }
Output:
[dha@localhost ~]$ cc stru.c [dha@localhost ~]$ ./a.out enter the number of students2 Enter the roll number 11 Enter the name vino Enter the mark1 78 Enter the mark2 90 Enter the mark3 86 Enter the roll number 12 Enter the name surya Enter the mark1 67 Enter the mark2 87 Enter the mark3 96 The details of the mark list is as follows
Rollno name mark1 mark2 mark3 total
11 vino 78 90 86 254 12 surya 67 87 96 250
RESULT:
Thus the ‘C’ Program to print the Students Name, Marks using ‘Structure’
Ex.NO:19 LARGEST AND SMALLEST NUMBER USING ARRAY
Aim:To Write a ‘C’ Program to find the Largest and Smallest numbers using ‘array’
Algorithm: Step 1: Start the Program.
Step 2: Enter the number of element.Step 3: if a[r]> large.Step 4: Print the largest element.
Step 5: if a[r] <small.Step 6: Print the Smallest element
Step 6: Stop the program.
Flow Chart
Program:#include<stdio.h> void main() {
int a[10],i,j,x,max,min;
printf("Enter 10 nos:");for(x=0;x<10;x++){
scanf("%d",&a[x]);}max=a[0];for(i=0;i<10;i++){
if(max<a[i+1])max=a[i+1];
}printf("largest no is %d",max);min=a[0];for(j=0;j<10;j++){
if(min>a[j+1])min=a[j+1];
}printf("\nsmallest no is %d",min);
}
Output:
[jp@TRPLinuxserver ~]$ vi largesma.c[jp@TRPLinuxserver ~]$ cc largesma.c[jp@TRPLinuxserver ~]$ ./a.outEnter 10 nos:1020605895545231121
largest no is 89smallest no is 5
Result:
Thus the program to find the largest and smallest using array has been executed successfully using array.
Ex.NO:20 COMMAND LINE ARGUMENTS
Aim:To Write a ‘C’ Program to print the command line arguments.
Program:
#include<stdio.h> int main(int argc, char **argv) { int counter; puts("The Arugements to the Program are: "); for(counter=0;counter<argc;counter++) puts(argv[counter]); return 0; }
Output:
[dha@localhost ~]$ cc comm.c [dha@localhost ~]$ ./a.out The Arugements to the Program are: ./a.out one two three./a.out Onetwothree
Result:
Thus the program to print the command line arguments is executed successfully.
Ex.NO:21 FILE HANDLING
Aim:To write a ‘C’ Program to print the Mark sheet of ‘n’ Students using File Handling.
Algorithm:
Step 1: Start the Program.Step 2: Enter the file name.Step 3: Enter the student details
Step 4: Enter the no. of records.
Step 5: Enter the student details.Step 6: open the file.Step 7. Print the details.Step 8. Stop the Program.
Flow Chart
Program:
#include<stdio.h>main(){FILE *fp1;int rno,m1,m2,m3,n,i,tot,avg;
char fname[10],sname[20];printf("\n Enter the file name:");scanf("%s",fname);fp1=fopen(fname,"W");printf("\n Enter the student details");printf("\n Enter the no.of records:");scanf("%d",&n);for(i=1;i<=n;i++){printf("\n Enter the rollno\t name\t mark1\t mark2\t mark3\t:\n");fscanf(stdin,"%d%s%d%d%d",&rno,sname,&m1,&m2,&m3);tot=m1+m2+m3;avg=tot/3;fprintf(fp1,"%d\t%s\t%d\t%d\t%d\t%d\t%d\n",rno,sname,m1,m2,m3,tot,avg);}fclose(fp1);fprintf(stdout,"\n\n");fp1=fopen(fname,"r");printf("\n rollno Name Mark1 Mark2 Mark3 Total Aveerage\n");for(i=1;i<n;i++);{fprintf(fp1,"%d\t%s\t%d\t%d\t%d\t%d\t %d \n",rno,sname,m1,m2,m3,tot,avg);}fclose(fp1);}}
Output:
[dha@localhost ~]$ cc mano.c[dha@localhost ~]$ ./a.out mano.cEnter the no. of students:2Enter SPRNO:786Enter student name:AsmiEnter Marks:Enter Maths Mark = 100Enter Lab Mark = 98
Enter SPRNO:794Enter student name:VinoEnter Marks:Enter Maths Mark = 90Enter Lab Mark = 95
[dha@localhost ~]$ vi z:marklist.txt
Student Marklist
SPRNO Name M1 M2 Total 786 Asmi 100 98 198 794 Vino 90 95 185
Result:
Thus the program to print the file content is executed successfully.
Ex.NO:22 DEMONSTRATION OF FORK
Aim:To Write a ‘C’ Program to represent Parent and Child Process Id using Fork.
Algorithm: Step 1: Start the Program.
Step 2: Enter the initial id.Step 3: if id==0
Step 4: Print Return value of fork to child.
Step 5: Print Return value of fork to Parent.Step 6. Stop the Program
Flow Chart
Program:
#include<stdio.h>main(){int id;id=fork();if(id==0){printf("\n Return value of fork to child : %d",id);printf("\n Parent process id : %d",getppid());printf("\n Child process id : %d",getpid());}
else{printf("\n Return value of fork to parent : %d",id);printf("\n Parent process id : %d",getppid());printf("\n Child process id : %d\n",getpid());}}
Output:
[dha@localhost ~]$ cc fork.c [dha@localhost ~]$ ./a.out fork.c
Return value of fork to child : 0 Parent process id : 3473 Child process id : 3474 Return value of fork to parent : 3474 Parent process id : 3330 Child process id : 3473Parent: 9 Child: 9
Result:
Thus the program represent Parent and Child Process Id using Forkis executed successfully.
Ex.NO:22 SIGNALS HANDLING
Aim: To write a program for Signal Handling.
Algorithm:
Step 1: Start the Program.Step 2: Declare the variable.Step 3: The signal (SIGNT, change) Display the signal with no interrupt Step 4: Give the Interrupt to the signal.
Step 5: Stop the Program.
Flow Chart:
Program:
#include<stdio.h>#include<signal.h>main(){void change();int i;signal(SIGINT,change);for(;;){printf("\n No Interruption...");sleep(2);}}void change(){static int cnt=0;cnt=cnt+1;signal(SIGINT,change);printf("\n %d Time Interrupted...",cnt);if(cnt==3)signal(SIGINT,SIG_DFL);}
Output:
[dha@localhost ~]$ cc signal.c [dha@localhost ~]$./a.out signal.c
No Interruption... No Interruption... No Interruption... 1 Time Interrupted... No Interruption... No Interruption... No Interruption... 2 Time Interrupted... No Interruption... No Interruption... No Interruption... 3 Time Interrupted... No Interruption...
Result:
Thus the program for Signal Handling is executed and verified.