unix programs & loops

36
UNIX PROGRAMS & LOOPS

Upload: nuri

Post on 12-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

UNIX PROGRAMS & LOOPS. #QUE:1 WRITE A UNIX SHELL SCRIPT TO #DISPLAY THE TYPE OF SHELL THAT ARE #CURRENTLY# LOGGED IN USER IS USING.IT #SHOULD DISPLAY THE MESSAGE AS BELOW. # echo $"user name:" $LOGNAME echo $"Shell:" $SHELL. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: UNIX PROGRAMS & LOOPS

UNIX PROGRAMS & LOOPS

Page 2: UNIX PROGRAMS & LOOPS

• #QUE:1 WRITE A UNIX SHELL SCRIPT TO #DISPLAY THE TYPE OF SHELL THAT ARE #CURRENTLY# LOGGED IN USER IS USING.IT #SHOULD DISPLAY THE MESSAGE AS BELOW.

# <TYBCA - SEM 5>echo $"user name:" $LOGNAMEecho $"Shell:" $SHELL

Page 3: UNIX PROGRAMS & LOOPS

#QUE:2 WRITE A UNIX SHELL SCRIPT TO ACCEPT THE EMPLOYEE NAME FROM THE USER AND DISPLAY APPROPRIATE MESSAGE.ASSUME EMPLOYEE IS WORKING #ON A SINGLE PROJECT DETAILS ARE STORED IN FILE THE EMPLOYEE ARE #STORE IN FILE STATUS.DAT.# <TYBCA - SEM 5>echo -e "Enter Name of the employee:\c"read nameecd=0rm=0 if ecd=`grep "$name" project.dat | cut -d "|" -f 1` then dw=`grep "$ecd" struct.dat | cut -d "|" -f 3` du=`grep "$ecd" project.dat | cut -d "|" -f 4` else echo -e "===Name Not Found===\n" fiif [ $dw -eq $du ] ; then echo "$name,Today is the last day to finished your project" else rm=`expr $du - $dw` if [ $rm -le 30 ] ; then echo "$name,Hurry! only $rm days are remaining to finish your project" else echo "$name,schedule yourself you have still $rm days to finish the job" fi fi

Page 4: UNIX PROGRAMS & LOOPS

#QUE:3 WRITE A UNIX SHELL SCRIPT WHICH TAKES I/P A FILENAME AND CHECKS IT TO SEE# IF IT IS A ORDINARY FILE AND READABLE, IT CONTAINS SHOULD BE DISPLAYED.# <TYBCA - SEM 5># echo -e "Enter the file name: \c"read fnameif [ -f $fname ]then if [ -$fname ] then cat $fname fifi

Page 5: UNIX PROGRAMS & LOOPS

#QUE:4 WRITE A UNIX SHELL SCRIPT TO FIND THE SUM OF FIRST N NUMBERS WHERE N IS # ACCEPTED FROM USER.# e.g 1+2+3...+n# <TYBCA - SEM 5># echo -e "Enter the value of n: \c"read nsum=0i=1while [ $i -le $n ]do sum=`expr $sum + $i` i=`expr $i + 1`doneecho The sum is: $sum

Page 6: UNIX PROGRAMS & LOOPS

QUE:5 WRITE A UNIX SHELL SCRIPT TO ACCEPT MARKS OF MATH,SCI,ENG AND CALCULATE# THE AVG OF MARKS AND DISPLAY THE MESSAGE.# <TYBCA - SEM 5>echo "Enter the marks of maths:"read mecho "Enter the marks of science:"read secho "Enter the marks of english:"read e(( avg=($m+$s+$e)/3 )) if [ $avg -gt 60 ]; then echo "FIRST CLASS"elif [ $avg -gt 50 ] && [ $avg -lt 60 ] then echo "SECOND CLASS"elif [ $avg -gt 40 ] && [ $avg -lt 50 ] then echo "THIRD CLASS" else echo "FAIL" fi

Page 7: UNIX PROGRAMS & LOOPS

#QUE:7 WRITE A UNIX SHELL SCRIPT WHICH PRINTS THE FOLLOWING:# A)THE MESSAGE "TODAY IS:" WITH CURRENT DATE IN MM/DD/YY FORMAT.# B)THE MESSAGE "NO OF USERS LOGGED IN:" WITH TOTAL NO OF CURRENT# LOGGED IN USERS.# C)THE MESSAGE "PERSONAL STATUS:" WITH YOU OWN LOGNAME,TERMINAL NUMBER,# DATA AND TIME OF LOGIN. # echo -e "Todays Date: \c" date +"%D"echo " " echo -e "NO. of user currently logged on: \c"who | wc -lecho " "echo -e "Personal information"who am i -Hecho " "

Page 8: UNIX PROGRAMS & LOOPS

#QUE:8 WRITE A UNIX SHELL SCRIPT THAT EXAMINES ALL THE NUMBERS FROM 1 TO 199# DISPLAYING ALL THOSE WHICH THE SUM OF THE CUBES OF THE DIGITS EQUALS# THE NUMBER ITSELT.# <TYBCA - SEM 5>echo The List of the digits.i=1 while [ $i -le 999 ] do no=$i sum=0 while [ $no -gt 0 ] do (( j = no%10 )) (( sum = sum + (j * j * j))) ((no = no / 10)) done if [ $sum -eq $i ] then echo " " echo $i fi ((i = i + 1))done

Page 9: UNIX PROGRAMS & LOOPS

#QUE:9 WRITE A UNIX SHELL SCRIPT TO ACCEPT THE SALESMAN CODE FROM USER AND THEN# DISPLAY ALL THE ORDER NUMBERS AND ORDER AMT FOR THAT SALESMAN CODE. ALSO# DISPLAY THE TOTAL ORDER AMT# <TYBCA - SEM 5>echo -e "Enter salesman code: \c"read scodesum=0echo Order no Order amountgrep "$scode" sales.dat | cut -f2,3for i in `grep "$scode" sales.dat | cut -f3`do (( sum = sum + i))doneecho -e "\nTotal amount: \c"echo $sum

Page 10: UNIX PROGRAMS & LOOPS

#QUE:11 WRITE A UNIX SHELL TO ADD RECORDS TO A FILE CALLED MATERIAL.DAT #THE FIELD USING MATCODE,QTY,SOLD AND RATE.# <TYBCA - SEM 5>mcode=`tail -1 mat.dat | cut -d"|" -f1`echo -e "\nEnter the quntity of sold item: \c"read qtyecho -e "\nEnter the amount: \c"read amtif [ $qty -lt 1 ] ; then echo -e "\nQuantity should be greater then 0"fiif [ $amt -le 100 -o $amt -gt 10000 ]then echo -e "\nAmount must between 100 and 10000"fi(( mcode = mcode + 1 ))echo "$mcode | $qty | $amt" >> mat.dat

Page 11: UNIX PROGRAMS & LOOPS

#QUE:12 WRITE A UNIX SHELL SCRIPT WHICH ACCEPTS A CHOICE FOR THE USER AND# EXECUTE THE CORRESPONDING PROGRAMS USING CASE STRUCTURE. ASSUMING# THE PROGRAM AS (ADD,MODIGY & DELETE) ALREADY EXITS THE FORMAT OF THE# MENU IS # A -> ADDITION# M -> MODIFICATION FO RECORDS# D -> DELETION OF RECORDS# Q -> QUIT# <TYBCA - SEM 5>echo 1. Addition of recordecho 2. Modify a recordecho 3. Deletion of recordecho 4. Quitecho -e "Enter your choice: \c"read chcat mat.datcase "$ch" in A) mcode=`tail -1 mat.dat | cut -d"|" -f1` echo -e "\nEnter the quntity of sold item: \c" read qty echo -e "\nEnter the amount: \c" read amt (( code = mcode + 1 )) echo "$code | $qty | $amt" >> mat.dat;;

Page 12: UNIX PROGRAMS & LOOPS

M) echo -e "\nWhich record u want to change?: \c" read r echo -e "\nEnter new quantity: \c" read nqty echo -e "\nEnter new rate: \c" read nrate sed ''$r' c\ $r' | '$nqty' | '$nrate'' mat.dat >ext cat ext > mat.dat;;D) echo -e "Enter record no: \c" read rn echo -e "Are you sure to delete this record?(Y or N): \c" read cho if [ $cho = 'Y' ] then sed ''$rn' d' mat.dat >ext fi;;Q)esac

Page 13: UNIX PROGRAMS & LOOPS

echo -e "ENTER BOOK NAME:" read bnamegrep "$bname" book.dat

Page 14: UNIX PROGRAMS & LOOPS

#QUE:14 WRITE A SHELL PROGRAM EHICH WILL WORK LIKE COMMAND WC.# <TYBCA - SEM 5># rd=0terminal=/dev/pts/0exec<$1while read linedo (( ln = ln + 1 )) set $line (( word = word + $# ))doneecho "Total no. of lines: $ln"echo "Total no of words: $word"exec<$terminal

Page 15: UNIX PROGRAMS & LOOPS

#QUE:16 WRITE A SHELL SCRIPTS TO COUNT NUMBER OF VOWELS IN FILE #IIGNORING THE CASE.# <TYBCA - SEM 5># echo -e "Enter a file name: \c"read fnametot=`wc -c < $fname`count=0while [ $tot -gt 0 ]do for ch in `cut -c $tot < $fname` do case $ch in a|A)(( count = count + 1 ));; e|E)(( count = count + 1 ));; i|I)(( count = count + 1 ));; o|O)(( count = count + 1 ));; u|U)(( count = count + 1 ));; esac done (( tot = tot - 1 ))done

Page 16: UNIX PROGRAMS & LOOPS

QUE:17 WRITE A SHELL SCRIPTS TO GENERATE RANDOM NUMBER.ALLOW USER TO GUESS 6 # TIMES TO GET THE NO.PRINT APPROPRIATE MESSAGES AGTER EACH GUESS# RANDOM GENERATED IS 100 USERS ENTERS 98 MESG: TO SMALL# USER ENTERS 104 THE MESG TO BIG# <TYBCA - SEM 5>ctr=0while truedo s=`date "+%S"` m=`date "+%M"` let rn=s\*m let ctr=ctr+1 echo -e "Enter your guess \c" read gu echo "Random Generated Is: $rn" if [ $gu -gt $rn ] ; then echo "Too Big" elif [ $gu -lt $rn ] ; then echo "Too Small" else echo "Equals" fi if [ $ctr -eq 5 ] ; then exit fidone

Page 17: UNIX PROGRAMS & LOOPS

# To Remove Directory and its subdirectory when user enters the name of # directoryecho "Enter name of directory"read dnameecho "This Will remove $dname and all the subdirectories below it"echo -e "Enter y/n :\c"read chif [ $ch == "n" -o $ch == "N" -o -z $dname ] ; then exit 1ficd $dnamewhile true ; do for i in `ls` ; do if [ -d $i ] ; then dir="true" dn=$i break; else dir="false" fi done

Page 18: UNIX PROGRAMS & LOOPS

if [ $dir == "true" ] ; then cd $dn else for i in `ls` ; do rm $i done ds=`pwd` dn=${ds##*/} cd .. rmdir $dn fi if [ $dn == $dname ] ; then break fidone

Page 19: UNIX PROGRAMS & LOOPS

QUE:19 WRITE A UNIX SELL SCRIPT THAT TAKES A LOGIN AS A COMMAND LING #ARGUMENT AND REPORTS TO YOU WHEN THAT PERSON LOGS IN.HAVE IS SEND #A GREETING TO THAT PERSONS EXPLAIN WHO WOULD YOU RUN SUCH A SHELL #SCRIPT. <TYBCA - SEM 5>if [ $ -lt 1 ]then echo -e "\nPlz. enter the username as command line argument" exitfilname=$1while truedo who | grep "$lname" > /dev/null if [ $?=0 ] then echo -e "\n$lname is logged in" echo -e "\n$lname logged in time: \c" date "+%I":"%M" echo "Welcome to the world of unix" | write $lname exit else sleep 60 fi done

Page 20: UNIX PROGRAMS & LOOPS

#QUE:20 WRITE A SHELL SCRIPT THAT TAKES A COMMAND LINE I/P N AND A WORD. IT# THEN PRINTS THE WORD N TIMES,ONE WORD PER LINE.# <TYBCA - SEM 5>

i=0while [ $i -lt $1 ]do echo $2 (( $i = $i + 1 ))done

Page 21: UNIX PROGRAMS & LOOPS

#QUE:21 WRITE A PROGRAM TO DISPLAY DATE IN DIFFERENT FORMAT ALONG WITH TIME.# <TYBCA - SEM 5># <ROLLNO - 27>echo Today date and time in different format as foloows...echodate "+%A, %B %d, %Y, %I:%M:%S"echodate "+%d/%m/%y, %H:%M:%S"echo date "+%a, %b, %d, %H:%M:%S, %p"echodate "+%D, %T"echo

Page 22: UNIX PROGRAMS & LOOPS

#QUE:22 WRITE A UNIX SHELL SCRIPT TO FIND SUM OF DIGIT AND CHECK THE NUMBER IS PALINDROM OR NOT. <TYBCA - SEM 5> echo -e "Enter positive no: \c"read noif [ "$no" -le "0" ]then echo Plz. Enter a positive no exitfisum=0count=0base=1(( no1 = no ))while [ "$no" -gt "0" ]do (( sum = sum + (no % 10) )) (( no = no / 10 )) (( count = count + 1 )) (( base = base * 10 ))done lin=0

Page 23: UNIX PROGRAMS & LOOPS

k=0(( no2 = no1 )) (( i = i + 1 ))echo -e "\nThe sum of digit is: $sum"if [ test $no2 -eq $palin ]then echo -e "\nThe number is Palindrome"else echo -e "\nThe number is not Palindrome"fi

Page 24: UNIX PROGRAMS & LOOPS

#QUE:41 WRITE A SHELL SCRIPT TO ACCEPT THE NAME OF THE USER AS #INPUT AND CHECK# OUT WHETHER THAT USER HAS LOG IN OR NOT.# <TYBCA SEM 5>echo " enter the login name...:"read lnfinger | cut -c 1-11 >q41.txt if grep $ln q41.txt then echo "USER IS LOG IN" else echo "USER IS NOT LOG IN" fi

Page 25: UNIX PROGRAMS & LOOPS
Page 26: UNIX PROGRAMS & LOOPS

##QUE26 TAKE 4 NUMERIC VALUES FROM THE USER & FIND OUT MAX VALUE. WRITE A SHELL# SCRIPT FOR IT.# <TYBCA - SEM 5>echo -e "\nEnter 4 numbers"echo -e "\nEnter first no: \c"read firstecho -e "\nEnter second no: \c"read secondecho -e "\nEnter third no: \c"read thirdecho -e "\nEnter fourth no: \c"read fourthfs=0tf=0if [ $first -ge $second ]then (( fs = first ))else (( fs = second ))fi if [ $third -ge $fourth ]

Page 27: UNIX PROGRAMS & LOOPS

if [ $third -ge $fourth ]then (( th = third ))else (( th = fourth ))fiif [ $fs -ge $th ]then echo -e "\n$fs is the greatest no"else echo -e "\n$th is the greatest no"fi

Page 28: UNIX PROGRAMS & LOOPS

#QUE:27 WRITE A SHELL SCRIPT TO DISPLAY THE FOLLOWING INFORMATION.# YOUR LOGIN DIRECTORY IS <LOGIN DIR NAME># YOUR PRIMARY PROMPT IS <PRIMARY PROMPT># NOW CURRENT MONTH IS <MONTH># FILES CAN BE EXECUTED AT <PATH># <TYBCA - SEM 5># < echo "YOUR LOGIN DIRECTORY IS:" $HOMEecho "YOUR PRIMARY PROMPT IS:" echo "NOW CURRENT MONTH IS:" `date +%B`echo "FILES CAN BE EXECUTED AT:" $PATH

Page 29: UNIX PROGRAMS & LOOPS

#QUE:29 WRITE A SHELL SCRIPT FOR ACCEPTING THE FOLLOWING INFORMATION AND STORING# IT IN A FILE.# CASSATTE NO. MOVIE NAME. LANGUAGE. PRICE AND DATE OF RELEASE.# <TYBCA - SEM 5># <SEM - 27>ans="y"while [ $ans == "y" ] do echo "Enter the cassatte no:" read cn echo "Enter the Movie name:" read mn echo "Enter the language:" read ln echo "Enter the price:" read p echo "Enter the date or release:" read dr echo " $cn | $mn | $ln | $p | $dr ">>movie.dat echo "Do you want to continue?[Y/N]" read ans done

Page 30: UNIX PROGRAMS & LOOPS

# #QUE:31shell procedure to delete the specified record from

the# library file. It should accept a book number, check

whether it is# existing. If so, display the current details, ask for

confirmation# and then delete it from the file.# <TYBCA SEM 5>clearecho -n "ENTER NUMBER OF THE BOOK:="read Bnc=`grep -c "$Bn" lib1.txt`if [ $c -gt 0 ]then grep "^$Bn" lib1.txt > list2 awk -F "|" '{ printf $1,$2,$3,$4,$5 }' list2 echo `grep $Bn lib1.txt` echo "DO YOU WANT TO DELETE(Y OR N)?" read ans

Page 31: UNIX PROGRAMS & LOOPS

if [ $ans = 'y' -o $ans = 'Y' ] then echo "THE BOOK IS DELETED" grep -v "^$Bn" lib1.txt > list1 mv list1 lib1.txt else echo "BOOK IS NOT DELETED" fielse echo "FILE DOES NOT EXIST"fi

Page 32: UNIX PROGRAMS & LOOPS

# QUE:32 Write a shell scripts which finds the occurence of a given word from fileecho -n "ENTER THE FILENAME:="read fn1awk 'BEGIN{ occ = 0 printf "\n ENTER THE WORD TO BE SEARCHED:=" getline wd < "/dev/tty" printf "\n WORD IS:= %s",wd}{ i = 0 split($0,ar," ") while( i <= NF ) { i = i+1 if (match(ar[i],wd)) occ++ }}END{ printf "\n NO. OF OCCURENCE %d \n ",occ}‘ $fn1

Page 33: UNIX PROGRAMS & LOOPS

# #QUE:33 WRITE A SHELL SCRIPT TO FIND THE SQUARE ROOT OR A EN NUMBER.# <TYBCA SEM 5>echo "ENTER THE NO:"read noecho "The number is $no"echo "sqrt($no)" | bc -l

Page 34: UNIX PROGRAMS & LOOPS

##QUE:38 Write a shell scripts to accept a string in the command line and# reverse the same.# <TYBCA SEM 5> echo $#echo $* > q1len=$(cat q1 |wc -c)i=`expr $len - 1`echo $im=" "while [ $i -gt 0 ]do m1=$(cut -c $i q1) echo $m1 m=`echo $m$m1` let i=i-1doneecho $mrm q1

Page 35: UNIX PROGRAMS & LOOPS

#QUE:39 Write a shell script to accept the number below 50 and display the# square of each this should continue as long as the user wishes.ch='y'while [ $ch = 'y' -o $ch = 'Y' ]do s=0 n=0 flag=0 while [ $flag -eq 0 ] do echo -n "ENTER THE NO:=" read n if [ $n -lt 50 ] then flag=1 else echo "NUMBER MUST BE LESS THEN 50" fi done s=0 s=`expr $n \* $n` echo "THE SQUARE OF $n IS:= $s" echo "DO YOU WANT TO CONTINUE PRESS:= Y/N" read chdone

Page 36: UNIX PROGRAMS & LOOPS

#QUE:40 Write a shell scripts to accept a name of user as input and check if# the same is present in /etc/passwd file.# <TYBCA SEM 5>clearecho "ENTER THE NAME OF USE TO CHECK IF IT PRESENT IN /etc/passwd"read nameif [ -z $name ]then echo "YOU HAVE ENTER THE NULL STRING"else grep "$name" /etc/passwd && printf "FOUND" || echo "USER IS NOT FOUND"fi#QUE:41 WRITE A SHELL SCRIPT TO ACCEPT THE NAME OF THE USER AS INPUT AND CHECK OUT WHETHER THAT USER HAS LOG IN OR NOT.# <TYBCA SEM 5>echo " enter the login name...:"read lnfinger | cut -c 1-11 >q41.txt if grep $ln q41.txt then echo "USER IS LOG IN" else echo "USER IS NOT LOG IN" fi