If you liked the post, Share on Facebook, Tweet and Google Plus (use buttons above). You can also Subscribe to our feed via Email for free.
Home » Unix/Linux » 15 Shell Scripts Examples for Exam Preparation
15 Shell Scripts Examples for Exam Preparation
This is a list of shell script or shell script programs examples for UNIX-like systems(e.g. Linux). Shell script is a script written for the shell, or command line interpreter, of an operating system. This shell scripts works in all the major UNIX shells like Bourne shell, C shell and Bash shell.
This programs or scripts are very likely to come in practical examinations. This collection of basic shell scripts examples(with output) covers most of the syllabus like loops, command line arguments(positional parameters), file operations, if..else..fi, case in statement etc.
If you want to install Linux/UNIX in Windows then you can check install Linux/UNIX in windows. You might also like to check list of C programs for exam preparation.
List of Shell Scripts for Unix and Linux
1) Shell script to calculates the gross salary. (HRA = 20% of basic salary, DA = 50% of basic salary)
Code:
clear echo -e "Enter basic salary:\c" read bs hra=`expr $bs \* 20 / 100` da=`expr $bs \* 50 / 100` gross=`expr $bs + $hra + $da` echo "Gross salary is $gross"
Output:
Enter basic salary:9000 Gross salary is 15300
2) Shell Script to Generate Fibonacci Series
Code:
if [ $# -eq 1 ] then num=$1 else echo -n "Enter a Number :" read num fi a=0 b=1 echo "The Fibonacci sequence for the number $num is : " for (( i=0;i<=num;i++ )) do echo -n "$a " f=$((a+b)) a=$b b=$f done
Enter a Number :8 The Fibonacci sequence for the number 8 is : 0 1 1 2 3 5 8 13 21
3) Shell script to check whether the given number is prime or not.
Code:
clear echo -e "Enter a number: \c" read num i=2 rem=1 if [ $num -lt $i ]; then echo -e "$num is not a prime number.\n" exit 0 fi while [ $i -le `expr $num / 2` -a $rem -ne 0 ]; do rem=`expr $num % $i` i=`expr $i + 1` done if [ $rem -ne 0 ]; then echo -e "$num is a prime number.\n" else echo -e "$num is not a prime number.\n" fi
Output:
Enter a number: 17 17 is a prime number. Enter a number: 10 10 is not a prime number.
4) Shell Script to Find Armstrong Numbers between a Range
Code:
echo -n "Enter the Lower Limit : " read Start echo -n "Enter the Upper Limit : " read Ending echo "Armstrong Numbers between $Start and $Ending are: " while [ $Start -le $Ending ] do Number=$Start Length=${#Number} Sum=0 OldNumber=$Number while [ $Number -ne 0 ] do Rem=$((Number%10)) Number=$((Number/10)) Power=$(echo "$Rem ^ $Length" | bc ) Sum=$((Sum+Power)) done if [ $Sum -eq $OldNumber ] then echo -n "$OldNumber " fi let Start++ done
Enter the Lower Limit : 100 Enter the Upper Limit : 400 Armstrong Numbers between 100 and 400 are: 153 370 371 407
5) Shell script to find the sum of digits of a number.
Code:
clear echo -e "Enter number:\c" read n n1=$n sum=0 r=0 while [ $n -gt 0 ] do r=`expr $n % 10` sum=`expr $sum + $r` n=`expr $n / 10` done echo -e "Sum of digits of number $n1 is $sum\n"
Output:
Enter number:7890 Sum of digits of number 7890 is 24
6) Shell Script to find profit or loss given the Cost price and Selling price
Code:
clear echo -e "Enter Cost Price:\c" read cp echo -e "Enter Selling Price:\c" read sp if [ $sp -eq $cp ]; then echo -e "\nNo profit or loss has incurred.\n" elif [ $sp -lt $cp ]; then echo -e "\nLoss of Rs.`expr $cp - $sp` has incurred.\n" else echo -e "\nProfit of Rs.`expr $sp - $cp` has incurred.\n" fi
Output:
Enter Cost Price:1000 Enter Selling Price:1250 Profit of Rs.250 has incurred. Enter Cost Price:300 Enter Selling Price:275 Loss of Rs.25 has incurred. Enter Cost Price:280 Enter Selling Price:280 No profit or loss has incurred.
7) Shell script, which receives two filenames as arguments. It checks whether the two files contents are same or not. If they are same then second file is deleted.
Code:
if [ 2 –ne $# ]; then echo “Usage: sh $0 filename1 filename2” echo “For eg. sh $0 abc.txt xyz.txt” if [ ! -e $1 ]; then echo -e " $1 does not exist!\n" exit 1 fi if [ ! -e $2 ]; then echo -e " $2 does not exist!\n" exit 1 fi if cmp $1 $2 then echo "Both file’s content are same." rm -f $2 if [ $? -eq 0 ]; then echo -e "File $2 deleted successfully.\n" else echo -e "Error deleting file $2. Please check whether it is a regular file or not.\n" fi else echo -e "Files $1 and $2 are different.\n" fi
Output:
$ sh filecmpdel.sh k.txt c.txt k.txt does not exist! $ sh filecmpdel.sh a.txt c.txt a.txt c.txt differ: char 4, line 1 Files a.txt and c.txt are different. $ sh filecmpdel.sh a.txt b.txt Both file’s content are same. File b.txt deleted successfully.
8) Write a program to find the factorial value of any number.
Code:
clear echo -e "Enter a number:\c" read num fact=1 n=$num while [ $num -ge 1 ] do fact=`expr $fact \* $num` num=`expr $num - 1` done echo -e "Factorial of $n is $fact\n"
Output:
Enter a number:7 Factorial of 7 is 5040
9) Menu driven Shell script that Lists current directory, Prints Working Directory, displays Date and displays Users logged in
Code:
clear chk=y while [ "$chk" = "y" ] do echo -e "\nMENU:\n1. List Current Directory\n2. Date\n3. Print Working Directory\n4. Users logged in \nEnter your choice:\c" read choice case "$choice" in 1) ls ;; 2) date ;; 3) pwd ;; 4) who -Hu ;; *) echo "Invalid Choice" esac echo -e "\nDo you want to continue? Enter y to continue or any other key to quit:" read chk done
Output:
MENU: 1. List Current Directory 2. Date 3. Print Working Directory 4. Users logged in Enter your choice:1 ap2.txt cost.sh f.txt res ap5.sh.txt c.txt google-chrome-stable_current_i386.deb result ap.sh.txt Desktop gross.sh sdf asd.sh Documents hui Templates a.sh Downloads makeshared test2.sh ass.txt dsa.sh menu.sh test.sh a.txt examples.deb Music Videos calc.sh filecmp.sh Pictures chk.sh file.sh prime.sh cobi.sh fsct.sh Public Do you want to continue? Enter y to continue or any other key to quit: y MENU: 1. List Current Directory 2. Date 3. Print Working Directory 4. Users logged in Enter your choice:2 Sun Oct 2 12:45:21 IST 2011 Do you want to continue? Enter y to continue or any other key to quit: y MENU: 1. List Current Directory 2. Date 3. Print Working Directory 4. Users logged in Enter your choice:3 /home/akash Do you want to continue? Enter y to continue or any other key to quit: y MENU: 1. List Current Directory 2. Date 3. Print Working Directory 4. Users logged in Enter your choice:4 NAME LINE TIME IDLE PID COMMENT akash tty7 2011-10-02 09:12 old 1074 (:0) akash pts/1 2011-10-02 09:18 . 1491 (:0.0) Do you want to continue? Enter y to continue or any other key to quit: n
10) Shell script to check executable rights for all files in the current directory, if a file does not have the execute permission then make it executable.
Code:
clear s=0 x=0 for file in *.*; do s=`expr $s + 1` if [ ! -x $file ]; then if chmod u+x $file then echo "Added executable permission to $file" x=`expr $x + 1` else echo "Error adding executable permission to $file" fi fi done echo -e "\nTotal number of files scanned: $s" echo -e "Executable permission added to $x files.\n"
Output:
Added executable permission to examples.desktop Added executable permission to google-chrome-stable_current_i386.deb Added executable permission to menu.sh Added executable permission to test2.sh Added executable permission to test.sh Total number of files scanned: 22 Executable permission added to 5 files.
11) Shell script for a simple calculator.
Code:
clear echo "Enter number1:\c" read n1 echo "Enter operator(+, -, /, *):\c" read op echo "Enter number2:\c" read n2 if [ "$op" = "+" ]; then calc=`echo $n1 + $n2|bc` echo "\n$n1 + $n2 = $calc\n" elif [ "$op" = "-" ]; then calc=`echo $n1 - $n2|bc` echo "\n$n1 - $n2 = $calc\n" elif [ "$op" = "*" ]; then calc=`echo $n1 \* $n2|bc` echo "\n$n1 * $n2 = $calc\n" elif [ "$op" = "/" ]; then calc=`echo $n1 / $n2|bc` echo "\n$n1 / $n2 = $calc\n" else echo "Invalid operator!\n" fi
Output:
Enter number1:100 Enter operator(+, -, /, *):+ Enter number2:50 100 + 50 = 150 Enter number1:90 Enter operator(+, -, /, *):* Enter number2:5 90 * 5 = 450
12) Shell program to generate all combinations of 1, 2, and 3
Code:
clear for i in 1 2 3 do for j in 1 2 3 do for k in 1 2 3 do echo $i $j $k done done done
Output:
1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 3 1 3 1 1 3 2 1 3 3 2 1 1 2 1 2 2 1 3 2 2 1 2 2 2 2 2 3 2 3 1 2 3 2 2 3 3 3 1 1 3 1 2 3 1 3 3 2 1 3 2 2 3 2 3 3 3 1 3 3 2 3 3 3
13) Shell program for number sequence.
Code:
clear if [ $# -ne 1 ]; then n=4 else n=$1 fi a=1 i=1 while [ $i -le $n ] do b=1 while [ $b -le $i ] do echo "$a \c" a=`expr $a + 1` b=`expr $b + 1` done echo "\n" i=`expr $i + 1` done
Output:
1 2 3 4 5 6 7 8 9 10
14) Decimal to Binary Conversion Shell Script
Code:
if [ $# -eq 0 ] then echo "Argument(s) not supplied " echo "Usage: dec2binary.sh Decimal_number(s)" else echo -e "\033[1mDECIMAL \t\t BINARY\033[0m" while [ $# -ne 0 ] do DecNum=$1 Binary= Number=$DecNum while [ $DecNum -ne 0 ] do Bit=$(expr $DecNum % 2) Binary=$Bit$Binary DecNum=$(expr $DecNum / 2) done echo -e "$Number \t\t $Binary" shift # Shifts command line arguments one step.Now $1 holds second argument unset Binary done fi
Output:
sh dec2binary.sh 7 16 255 256 1023 1024 DECIMAL BINARY 7 111 16 10000 255 11111111 256 100000000 1023 1111111111 1024 10000000000
15) Shell Script to Check Whether a String is Palindrome or not
Code:
if [ $# -eq 0 ] then echo -n "Enter a String: " read pstr else pstr=$* fi # Remove all punctuations from input string and convert upper case to # lower or lower case to upper. String="$(echo $pstr | sed 's/[^[:alnum:]]//g' | \ tr '[:upper:]' '[:lower:]')" Flag=0 # Find length of the string. len=${#String} #You can also calculate string length using bellow commands. #len=`echo $str | wc -c` #len=$((len-1)) #get the mid value up to which the comparison would be done. mid=$((len/2)) for ((i=1;i<=mid;i++)) do c1=`echo $String|cut -c$i` # extracts from beginning c2=`echo $String|cut -c$len` # extracts from last if [ $c1 != $c2 ] then Flag=1 break 2 # break N breaks out of N levels of loop. fi let len-- done if [ $Flag -eq 0 ] then echo "\"$pstr\" is a Palindrome" else echo "\"$pstr\" is not a Palindrome" fi
Output:
sh palindrome1.sh Akash Shastri "Akash Shastri" is not a Palindrome sh palindrome.sh Dammit, I\'m mad! "Dammit, I'm mad!" is a Palindrome sh palindrome1.sh Enter a String: 11/02/2011 "11/02/2011" is a Palindrome
If you have any queries related to the shell script, you can comment below.
4 comments:
Nice scripts... very useful !!!
sir can u send more shell scripts
sir can u give me code to print all the pemutations of given number contains n digits and those permutations should be less than or equal to given number
nice very nice thank you....
Post a Comment