UNIX PROGRAMS LOOPS QUE 1 WRITE A UNIX

  • Slides: 36
Download presentation
UNIX PROGRAMS & LOOPS

UNIX PROGRAMS & LOOPS

 • #QUE: 1 WRITE A UNIX SHELL SCRIPT TO #DISPLAY THE TYPE OF

• #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: " $LOGNAME echo $"Shell: " $SHELL

#QUE: 2 WRITE A UNIX SHELL SCRIPT TO ACCEPT THE EMPLOYEE NAME FROM THE

#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 name ecd=0 rm=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" fi if [ $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

#QUE: 3 WRITE A UNIX SHELL SCRIPT WHICH TAKES I/P A FILENAME AND CHECKS

#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 fname if [ -f $fname ] then if [ -$fname ] then cat $fname fi fi

#QUE: 4 WRITE A UNIX SHELL SCRIPT TO FIND THE SUM OF FIRST N

#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 n sum=0 i=1 while [ $i -le $n ] do sum=`expr $sum + $i` i=`expr $i + 1` done echo The sum is: $sum

QUE: 5 WRITE A UNIX SHELL SCRIPT TO ACCEPT MARKS OF MATH, SCI, ENG

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 m echo "Enter the marks of science: " read s echo "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

#QUE: 7 WRITE A UNIX SHELL SCRIPT WHICH PRINTS THE FOLLOWING: # A)THE MESSAGE

#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 -l echo " " echo -e "Personal information" who am i -H echo " "

#QUE: 8 WRITE A UNIX SHELL SCRIPT THAT EXAMINES ALL THE NUMBERS FROM 1

#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))) ((no = no / 10)) done if [ $sum -eq $i ] then echo " " echo $i fi ((i = i + 1)) done

#QUE: 9 WRITE A UNIX SHELL SCRIPT TO ACCEPT THE SALESMAN CODE FROM USER

#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 scode sum=0 echo Order no Order amount grep "$scode" sales. dat | cut -f 2, 3 for i in `grep "$scode" sales. dat | cut -f 3` do (( sum = sum + i)) done echo -e "n. Total amount: c" echo $sum

#QUE: 11 WRITE A UNIX SHELL TO ADD RECORDS TO A FILE CALLED MATERIAL.

#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"|" -f 1` echo -e "n. Enter the quntity of sold item: c" read qty echo -e "n. Enter the amount: c" read amt if [ $qty -lt 1 ] ; then echo -e "n. Quantity should be greater then 0" fi if [ $amt -le 100 -o $amt -gt 10000 ] then echo -e "n. Amount must between 100 and 10000" fi (( mcode = mcode + 1 )) echo "$mcode | $qty | $amt" >> mat. dat

#QUE: 12 WRITE A UNIX SHELL SCRIPT WHICH ACCEPTS A CHOICE FOR THE USER

#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 record echo 2. Modify a record echo 3. Deletion of record echo 4. Quit echo -e "Enter your choice: c" read ch cat mat. dat case "$ch" in A) mcode=`tail -1 mat. dat | cut -d"|" -f 1` echo -e "n. Enter the quntity of sold item: c" read qty echo -e "n. Enter the amount: c" read amt (( code = mcode + 1 )) echo "$code | $qty | $amt" >> mat. dat; ;

M) echo -e "n. Which record u want to change? : c" read r

M) echo -e "n. Which record u want to change? : c" read r echo -e "n. Enter new quantity: c" read nqty echo -e "n. Enter 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

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

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

#QUE: 14 WRITE A SHELL PROGRAM EHICH WILL WORK LIKE COMMAND WC. # <TYBCA

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

#QUE: 16 WRITE A SHELL SCRIPTS TO COUNT NUMBER OF VOWELS IN FILE #IIGNORING

#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 fname tot=`wc -c < $fname` count=0 while [ $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

QUE: 17 WRITE A SHELL SCRIPTS TO GENERATE RANDOM NUMBER. ALLOW USER TO GUESS

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=0 while true do 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 fi done

# To Remove Directory and its subdirectory when user enters the name of #

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

if [ $dir == "true" ] ; then cd $dn else for i in

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 fi done

QUE: 19 WRITE A UNIX SELL SCRIPT THAT TAKES A LOGIN AS A COMMAND

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 "n. Plz. enter the username as command line argument" exit fi lname=$1 while true do 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

#QUE: 20 WRITE A SHELL SCRIPT THAT TAKES A COMMAND LINE I/P N AND

#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=0 while [ $i -lt $1 ] do echo $2 (( $i = $i + 1 )) done

#QUE: 21 WRITE A PROGRAM TO DISPLAY DATE IN DIFFERENT FORMAT ALONG WITH TIME.

#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. . . echo date "+%A, %B %d, %Y, %I: %M: %S" echo date "+%d/%m/%y, %H: %M: %S" echo date "+%a, %b, %d, %H: %M: %S, %p" echo date "+%D, %T" echo

#QUE: 22 WRITE A UNIX SHELL SCRIPT TO FIND SUM OF DIGIT AND CHECK

#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 no if [ "$no" -le "0" ] then echo Plz. Enter a positive no exit fi sum=0 count=0 base=1 (( no 1 = no )) while [ "$no" -gt "0" ] do (( sum = sum + (no % 10) )) (( no = no / 10 )) (( count = count + 1 )) (( base = base * 10 )) done lin=0

k=0 (( no 2 = no 1 )) (( i = i + 1

k=0 (( no 2 = no 1 )) (( i = i + 1 )) echo -e "n. The sum of digit is: $sum" if [ test $no 2 -eq $palin ] then echo -e "n. The number is Palindrome" else echo -e "n. The number is not Palindrome" fi

#QUE: 41 WRITE A SHELL SCRIPT TO ACCEPT THE NAME OF THE USER AS

#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 ln finger | cut -c 1 -11 >q 41. txt if grep $ln q 41. txt then echo "USER IS LOG IN" else echo "USER IS NOT LOG IN" fi

##QUE 26 TAKE 4 NUMERIC VALUES FROM THE USER & FIND OUT MAX VALUE.

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

if [ $third -ge $fourth ] then (( th = third )) else ((

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

#QUE: 27 WRITE A SHELL SCRIPT TO DISPLAY THE FOLLOWING INFORMATION. # YOUR LOGIN

#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: " $HOME echo "YOUR PRIMARY PROMPT IS: " echo "NOW CURRENT MONTH IS: " `date +%B` echo "FILES CAN BE EXECUTED AT: " $PATH

#QUE: 29 WRITE A SHELL SCRIPT FOR ACCEPTING THE FOLLOWING INFORMATION AND STORING #

#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

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

# #QUE: 31 shell 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> clear echo -n "ENTER NUMBER OF THE BOOK: =" read Bn c=`grep -c "$Bn" lib 1. txt` if [ $c -gt 0 ] then grep "^$Bn" lib 1. txt > list 2 awk -F "|" '{ printf $1, $2, $3, $4, $5 }' list 2 echo `grep $Bn lib 1. txt` echo "DO YOU WANT TO DELETE(Y OR N)? " read ans

if [ $ans = 'y' -o $ans = 'Y' ] then echo "THE BOOK

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

# QUE: 32 Write a shell scripts which finds the occurence of a given

# QUE: 32 Write a shell scripts which finds the occurence of a given word from file echo -n "ENTER THE FILENAME: =" read fn 1 awk ' 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 }‘ $fn 1

# #QUE: 33 WRITE A SHELL SCRIPT TO FIND THE SQUARE ROOT OR A

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

##QUE: 38 Write a shell scripts to accept a string in the command line

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

#QUE: 39 Write a shell script to accept the number below 50 and display

#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 ch done

#QUE: 40 Write a shell scripts to accept a name of user as input

#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> clear echo "ENTER THE NAME OF USE TO CHECK IF IT PRESENT IN /etc/passwd" read name if [ -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 ln finger | cut -c 1 -11 >q 41. txt if grep $ln q 41. txt then echo "USER IS LOG IN" else echo "USER IS NOT LOG IN" fi