UNIX and Shell Programming
UNIX
and Shell Programming
Practical
(506)
(Basic and Important Scripts)
1) Shell script
to calculates the gross salary. (HRA = 20% of basic salary, DA = 50% of basic
salary)
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
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
Output:
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.
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
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
Output:
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.
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
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.
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.
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
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.
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.
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
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.
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
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
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
Comments
Post a Comment