SlideShare ist ein Scribd-Unternehmen logo
1 von 102
1. #! is called as
Ans. shebang
2. Which of the following is not a kind of shell
Ans. dsh
3. [ is eqvivalent to
Ans. test
4. The difference between printf and echo is
Ans. Echo adds a new line after printing, printf does not
5. ". " is used to match
Ans. Any one character
6. Which of the following symbols is used as prefix to access the value of variables in scripting
Ans. $
7. The comparison operator " -eq " is used for
Ans. Numbers
8. A comment line in a script begins with
Ans. #
9. Every line in a shell script ends with
Ans. There is no rule
10. Scripts are made executable using the command
Ans. chmod
Linux/Unix Shell related questions
1. How do you find out what’s your shell? - echo $SHELL
2. What’s the command to find out today’s date? - date
3. What’s the command to find out users on the system? - who
4. How do you find out the current directory you’re in? - pwd
5. How do you remove a file? - rm
6. How do you remove a directory and its subdirectories - rm -rf
7. How do you find out your own username? - whoami
8. How do you send a mail message to somebody? - mail somebody@techinterviews.com -s ‘Your
subject’ -c ‘cc@techinterviews.com‘
9. How do you count words, lines and characters in a file? - wc
10. How do you search for a string inside a given file? - grep string filename
11. How do you search for a string inside a directory? - grep string *
12. How do you search for a string in a directory with the subdirectories recursed? - grep -r string *
13. What are PIDs? - They are process IDs given to processes. A PID can vary from 0 to 65535.
14. How do you list currently running process? - ps
15. How do you stop a process? - kill pid
16. How do you find out about all running processes? - ps -ag
17. How do you stop all the processes, except the shell window? - kill 0
18. How do you fire a process in the background? - ./process-name &
19. How do you refer to the arguments passed to a shell script? - $1, $2 and so on. $0 is your script
name.
20. What’s the conditional statement in shell scripting? - if ,condition- then … fi
21. How do you do number comparison in shell scripts? - -eq, -ne, -lt, -le, -gt, -ge
22. How do you test for file properties in shell scripts? - -s filename tells you if the file is not empty, -f
filename tells you whether the argument is a file, and not a directory, -d filename tests if the argument
is a directory, and not a file, -w filename tests for writeability, -r filename tests for readability, -x
filename tests for executability
23. How do you do Boolean logic operators in shell scripting? - ! tests for logical not, -a tests for logical
and, and -o tests for logical or.
24. How do you find out the number of arguments passed to the shell script? - $#
25. What’s a way to do multilevel if-else’s in shell scripting? - if {condition} then {statement} elif
{condition} {statement} fi
26. How do you write a for loop in shell? - for {variable name} in {list} do {statement} done
27. How do you write a while loop in shell? - while {condition} do {statement} done
28. How does a case statement look in shell scripts? - case {variable} in {possible-value-1}) {statement};;
{possible-value-2}) {statement};; esac
29. How do you read keyboard input in shell scripts? - read {variable-name}
30. How do you define a function in a shell script? - function-name() { #some code here return }
31. How does getopts command work? - The parameters to your script can be passed as -n 15 -x 20.
Inside the script, you can iterate through the getopts array as while getopts n:x option, and the variable
$option contains the value of the entered option.
13. Write a script calculate, which accepts 4 arguments a, b, c, d and prints the value
of a × 20 − b × 2 + c ÷ d to standard output.
An example of executing the script:
$ calculate 2 12 5 2
The value of "2*20 - 12*2 + 5/2" is 18
r=$(((($1*20))-(($2*2))+(($3/$4))))
echo $r
[abcd@linuxunix]$ chmod +x u13.sh
[abcd@linuxunix]$ ./u13.sh 1 1 1 1
19
Chapter 8 Solutions
Review Questions
1. Because Standard Error and Standard Ouput represent the results of a command and Standard
Input represents the input required for a command, only Standard Error and Standard Ouput can be
redirected to/from a file. True or False?
Answer: False
2. Before a user-defined variable can be used by processes that run in subshells, that variable must
be __________.
a. imported
b. validated by running the env command
c. exported
d. redirected to the BASH shell
Answer: c
3. The alias command can be used to make a shortcut to a single command. True or False?
Answer: True
4. Which of the following files is always executed immediately after a user logs in to a Linux system
and receives a BASH shell?
a. /etc/profile
b. ~/.bash_profile
c. ~/.bash_login
d. ~/.profile
Answer: a
5. Which command could you use to see a list of all environment and user-defined shell variables
as well as their current values?
a. ls /var
b. env
c. set
d. echo
Answer: c
6. Every if construct begins with if and must be terminated with?
a. end
b. endif
c. stop
d. fi
Answer: d
7. Which of the following will display the message welcome home if the cd /home/user1 command
is successfully executed?
a. cd /home/user1 && echo “welcome home”
b. cat “welcome home” || cd /home/user1
c. cd /home/user1 || cat “welcome home”
d. echo “welcome home” && cd /home/user1
Answer: a
8. The current value for the HOME variable is displayed by which of the following commands?
(Choose all that apply.)
a. echo HOME=
b. echo ~
c. echo $HOME
d. echo ls HOME
Answer: b, c
9. Which of the following file descriptor numbers represents stdout?
a. 2
b. 0
c. 1
d. 3
Answer: c
10. Which of the following operators reverses the meaning of a test statement?
a. #!
b. -o
c. -a
d. !
Answer: d
11. What would be the effect of using the alias command to make an alias for
the date command named cat in honor of your favorite pet?
a. It cannot be done as there already is an environment variable cat associated with the cat
command.
b. It cannot be done as there already is a command cat on the system.
c. When you use the cat command at the command prompt with the intention of viewing a text
file, the date appears instead.
d. There is no effect until the alias is imported as it is a user-declared variable.
Answer: c
12. How do you indicate a comment line in a shell script?
a. There are no comment lines in a shell script.
b. Begin the line with #!.
c. Begin the line with !.
d. Begin the line with #.
Answer: d
13. You have redirected Standard Error to a file called Errors. You view the
contents of this file afterward and notice that there are six error messages. After
repeating the procedure, you notice that there are only two error messages in
this file. Why?
a. After you open the file and view the contents, the contents are lost.
b. The system generated different Standard Ouput.
c. You did not append the Standard Error to the Error file and as a result, it was overwritten when
the command was run a second time.
d. You must specify a new file each and every time you redirect as the system creates the specified
file by default.
Answer: c
14. The sed and awk commands are filter commands commonly used to format data within a pipe.
True or False?
Answer: True
15. What is wrong with the following command string ls /etc/hosts >listofhostfile?
a. Nothing is wrong with the command.
b. The file descriptor was not declared; unless 1 for Standard Ouput or 2 for Standard Error is
indicated, the command will fail.
c. The ls command is one of the commands that cannot be used with redirection; you must use |
to pipe instead.
d. The file listofhostfile will always only contain Standard Error as a file descriptor was not
declared.
Answer: a
16. Which of the following is not necessarily generated by every command on the system? (Choose
all that apply.)
a. Standard Input
b. Standard Deviation
c. Standard Ouput
d. Standard Error
Answer: a, b
17. Which construct can be used in a shell script to read Standard Input and place it in a variable?
a. read
b. sum
c. verify
d. test
Answer: a
18. A variable identifier must _________.
a. not begin with a number
b. not begin with a capital letter
c. start with a number
d. start with an underscore “_”
Answer: a
19. What does >> accomplish when entered on the command line after a command?
a. It redirects both Standard Error and Standard Ouput to the same location.
b. It does not accomplish anything.
c. It redirects Standard Error and Standard Input to the same location.
d. It appends Standard Output to a file.
Answer: d
20. Consider the following shell script:
echo -e “What is your favorite color?--> c”
read REPLY
if [ “$REPLY” = “red” –o “$REPLY” = “blue” +
then
echo “The answer is red or blue.”
else
echo “The answer is not red nor blue.”
fi
What would be displayed if a user executes this program and answered Blue when prompted?
a) The answer is red or blue.
b) The answer is not red nor blue.
c) The code would cause an error.
d) The answer is red or blue. The answer is not red nor blue.
Answer: b
#! /bin/bash
#this file displays a list of currently logged in users #followed by the system hostname, time and date,
disk #usage, current working directory and pathname to the BASH #shell
echo “Users currently on the system: "
who
echo “nThe system’s hostname is: c"
echo $HOSTNAME
echo “nThe current date and time is: c"
date
echo “nCurrent disk usage is: "
df
echo “nYour present working directory is: c“
echo $PWD
echo “nThe pathname to the bash shell is: c“
echo $BASH
Discovery Exercise 7
#!/bin/bash
#This program calculates a grade from a number entered by #the user
echo “Please enter a grade between 0 and 100 -->c"
read GRADE
if [ $GRADE –lt 50 ]
then
echo “The grade is F”
elif [ $GRADE –lt 60 –a $GRADE –ge 50 ]
then
echo “The grade is D”
elif [ $GRADE –lt 70 –a $GRADE –ge 60 ]
then
echo “The grade is C”
elif [ $GRADE –lt 80 –a $GRADE –ge 70 ]
then
echo “The grade is B”
elif [ $GRADE –le 100 –a $GRADE ge 80 ]
then
echo “The grade is A”
else
echo "Invalid number – please try again"
fi
Exercise 1: Write a shell script that accepts a file name, starting and ending line
numbers as arguments and displays all the lines between the given line numbers.
Solution 2 ...
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
#
# 01readlines1.sh
#
# Author: Mohammed AhsanSiddiqui (ahsan.academic@gmail.com)
#
# Synopsis: This script displays the lines of a text file between given starting
# line number and ending line number. It uses 'read' command to read individual
# lines of text file
#
# Arguments: Expects 3 arguments. First argument is the file name, second
# argument is the starting line number (an integer) and third argument also
# an integer which indicates the ending line number
#
# Syntax: ./01readlines1.sh <text_file><start_line_num><end_line_num>
#
# Returns: All the text lines between starting line number and ending line
# number
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
#!/bin/bash # Direct the script to use bash shell for its execution
# Check to see if enough arguments are passed
if [ $# -lt 3 ]
then
echo "Usage: ./01readlines1.sh <text_file><start_line_num><end_line_num>"
exit 1
fi
# Ignore if extra arguments supplied
if [ $# -gt 3 ]
then
echo "Usage: ./01readlines1.sh <text_file><start_line_num><end_line_num>"
echo "Warning !!!: Ignoring extra arguments !!!"
fi
file_name=$1 # Read the file name
start_line_num=$2 # Read the starting line number
end_line_num=$3 # Read the ending line number
# Check if the text file exists
if [ ! -f $file_name ]
then
echo "File $file_name does not exist"
exit 2
fi
# Check if the starting line number is supplied as an integer
if ! [[ $start_line_num =~ ^[0-9]+$ ]]
then
echo "Starting line number should be an integer"
exit 3
fi
# Check if the ending line number is supplied as an integer
if ! [[ $end_line_num =~ ^[0-9]+$ ]]
then
echo "Ending line number should be an integer"
exit 3
fi
exec 3<&0 # Redirect standard input temporarily to file descriptor 3
exec 0<$file_name # Redirect the standard input from the text file
i=0 # Initiate a variable to keep track of current line read
# from input file
# Read next line, and keep looping while there are still more lines to read
while read line
do
i=`expr $i + 1` # Update the line number by incrementing it by 1
# Check to see if the current line number is between the range
if ( [ $i -ge $start_line_num ] && [ $i -le $end_line_num ] )
then
echo $i " " $line # Display the line number and the line text
fi
done
exec 0<&3 # Restore back the original standard input
Write a shell script that allows a user to enter his or her top three ice
cream flavors. Your script should then print out the name of all three
flavors.
#!/bin/bash
read -p "Enter your three ice cream flavors : " ice1 ice2 ice3
echo "Thanks $USER!"
echo "1# ${ice1}"
echo "2# ${ice2}"
echo "#3 ${ice3}"
Write a shell script that allows a user to enter any Internet domain name (host
name such as www.cyberciti.biz). Your script should than print out the IP address
of the Internet domain name.
#!/bin/bash
# Version 1
read -p "Enter any Internet domain name : " domainname
host "${domainname}"
OR
#!/bin/bash
# Version 2
read -p "Enter any Internet domain name : " domainname
host "${domainname}" | grep 'has address'
. Write a shell script that allows a user to enter any existing file name. The
program should then copy file to /tmp directory.
#!/bin/bash
# Version 1 (blind copy)
read -p "Enter any file name : " filename
cp $filename /tmp
OR
#!/bin/bash
# Version 2 (first check for $filename and than copy it, else display an error message)
read -p "Enter any file name : " filename
# if file exists, than copy it
if [ -f "${filename}" ]
then
cp -v "$filename" /tmp
else
echo "$0: $filename not found."
fi
9. Write a shell script that allows a user to enter directory name. The program
should then create directory name in /tmp directory.
#!/bin/bash
# Version 1 (blind "mkdir directory" command)
read -p "Enter any directory name : " directory
mkdir "/tmp/${directory}"
OR
#!/bin/bash
# Version 2 (Make sure dir does not exist, else display an error message)
read -p "Enter any directory name : " directory
# Make sure dir does not exits
if [ ! -d "/tmp/${directory}" ]
then
mkdir -v "/tmp/${directory}"
else
echo "$0: /tmp/${directory} already exits."
fi
OR
#!/bin/bash
# Version 3
# Make sure dir does not exist, else display an error message
# Use variables
BASE="/tmp"
read -p "Enter any directory name : " directory
# create a path
mydir="${BASE}/${directory}"
# Make sure dir does not exits
if [ ! -d "${mydir}" ]
then
mkdir -v "${mydir}"
else
echo "$0: ${mydir} already exists."
fi
10. Write a shell script that allows a user to enter three file names. The program
should then copy all files to USB pen.
#!/bin/bash
# Version 1
PEN="/media/usb"
read -p "Enter three file names : " f1 f2 f3
cp -v "$f1" "$f2" "$f3" $PEN
OR
#!/bin/bash
# Version 2
# Make sure file exits and usb pen is mounted at $PEN
# Set path
PEN="/media/usb"
read -p "Enter three file names : " f1 f2 f3
# Make sure pen drive exits else die
[ ! -d "$PEN" ] && { echo "$0: USB pen drive not found at $PEN"; exit 1; }
# Make sure pen drive is mounted else die
if grep -wq "$PEN" /etc/mtab
then
# Make copy only if file exists, else display an error
[ -f "$f1" ] &&cp -v "$f1" $PEN || echo "$0: $f1 not found."
[ -f "$f2" ] &&cp -v "$f2" $PEN || echo "$0: $f2 not found."
[ -f "$f3" ] &&cp -v "$f3" $PEN || echo "$0: $f3 not found."
else
echo "$0: USB pen is not mounted at $PEN."
fi
11. Write a simple shell script where the user enters a pizza parlor bill total. Your
script should then display a 10 percent tip.
#!/bin/bash
# Version 1
clear
echo "*************************"
echo "*** Joes Pizza Parlor ***"
echo "*************************"
echo
echo "Today is $(date)"
echo
read -p "Enter a pizza parlor bill : " bill
tip=$(echo "scale=2; (${bill}*10) / 100" | bc -l)
total=$(echo "scale=2; $tip + $bill" | bc -l)
echo "Pizza bill : $bill"
echo "Tip (10%) : ${tip}"
echo "--------------------------"
echo "Total : ${total}"
echo "--------------------------"
12. Write a simple calculator program that allows user to enter two numeric
values and operand as follows. The program should then print out the sum of two
numbers. Make sure it works according to entered operand.
#!/bin/bash
read -p "Enter two values : " a b
read -p "Enter operand ( +, -, /, *) : " op
ans=$(( $a $op $b ))
echo "$a $op $b = $ans"
Exercise 2: Write a shell script that deletes all lines containing a specified word in
one or more files supplied as arguments to it
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
#
# 02dellines1.sh
#
# Author: Mohammed AhsanSiddiqui (ahsan.academic@gmail.com)
#
# Synopsis: This script deletes all the lines in a given set of files (passed
# as arguments) whenever a line contains a given word (also passed as argument)
#
# Arguments: Expects atleast 2 arguments. First argument is the word that will
# be searched in every line of each file. Starting with second argument and
# afterwards all the remaining arguments will be treated as file names
#
# Syntax: ./02dellines1.sh <search_word><file_name> [<file_name> ...]
#
# Returns: All the text lines from each mentioned file not containing the
# specified word
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~
#!/bin/bash # Direct the script to use bash shell for its execution
# Check to see if enough arguments are passed
if [ $# -lt 2 ]
then
echo "Usage: ./02dellines1.sh <search_word><file_name> [<file_name> ...]"
exit 1
fi
search_word=$1 # Read the search word
# Loop through all the supplied arguments
for file_name in "$@"
do
# Skip the search word
if [ "$file_name" = "$1" ]
then
continue
fi
echo $file_name
echo "--------------------"
# Check if the text file exists
if [ ! -f $file_name ]
then
echo "File "$file_name" does not exist"
exit 2
fi
# Loop through the file line by line
while read line
do
# if word is not found in current line then display it
if ( ! ( echo $line | grep "$search_word" > /dev/null ) )
then
echo $line # Display the line
fi
done < $file_name
done
Lab Exercise-4
1) Write a shell script to ask your name, program name and enrollment number
and print it on the screen.
Echo “Enter your name:”
Read Name
Echo “Enter your program name:”
Read Prog
Echo “Enter your enrollment number:”
Read Enroll
Clear
Echo “Details you entered”
Echo Name: $Name
Echo Program Name: $Prog
Echo Enrolment Number: $Enroll
2) Write a shell script to find the sum, the average and the product of the four
integers entered
Echo “Enter four integers with space between”
Read a b c d
Sum =`expr $a + $b + $c + $d`
Avg =`expr $sum / 4`
Dec =`expr $sum % 4`
Dec =`expr  ($dec * 1000 ) / 4`
Product =`expr $a * $b * $c * $d`
Echo Sum = $sum
Echo Average = $avg. $dec
Echo Product = $product
3) Write a shell program to exchange the values of two variables
Echo “Enter value for a:”
Read a
Echo “Enter value for b:”
Read b
Clear
Echo “Values of variables before swapping”
Echo A = $a
Echo B = $b
Echo Values of variables after swapping
a = `expr $a + $b`
b = `expr $a – $b`
a = `expr $a – $b`
Echo A = $a
Echo B = $b
4) Find the lines containing a number in a file
Echo “Enter filename”
Read filename
Grep [0-9] $filename
5) Write a shell script to display the digits which are in odd position in a
given 5 digit number
Echo “Enter a 5 digit number”
Read num
n = 1
while [ $n -le 5 ]
do
a = `Echo $num | cut -c $n`
Echo $a
n = `expr $n + 2`
done
6) Write a shell program to reverse the digits of five digit integer
Echo “Enter a 5 digit number”
Read num
n = $num
rev=0
while [ $num -ne 0 ]
do
r = `expr $num % 10`
rev = `expr $rev * 10 + $r`
num = `expr $num / 10`
done
Echo “Reverse of $n is $rev”
7) Write a shell script to find the largest among the 3 given numbers
Echo “Enter 3 numbers with spaces in between”
Read a b c
1 = $a
if [ $b -gt $l ]
then
l = $b
fi
if [ $c -gt $l ]
then
l = $c
fi
Echo “Largest of $a $b $c is $l”
8) Write a shell program to search for a given number from the list of
numbers provided using binary search method
Echo “Enter array limit”
Read limit
Echo “Enter elements”
n = 1
while [ $n -le $limit ]
do
Read num
evalarr$n = $num
n = `expr $n + 1`
done
Echo “Enter key element”
Read key
low = 1
high = $n
found = 0
while [ $found -eq 0 -a $high -gt $low ]
do
mid = `expr ( $low + $high ) / 2`
eval t = $arr$mid
if [ $key -eq $t ]
then
found = 1
elif [ $key -lt $t ]
then
high = `expr $mid – 1`
else
low = `expr $mid + 1`
fi
done
if [ $found -eq 0 ]
then
Echo “Unsuccessful search”
else
Echo “Successful search”
fi
9) Write a shell program to concatenate two strings and find the length of the
resultant string
Echo “Enter first string:”
Read s1
Echo “Enter second string:”
Read s2
s3 = $s1$s2
len = `Echo $s3 | wc -c`
len = `expr $len – 1`
Echo “Concatenated string is $s3 of length $len ”
10) Write a shell program to find the position of substring in given string
Echo “Enter main string:”
Read main
l1 = `Echo $main | wc -c`
l1 = `expr $l1 – 1`
Echo “Enter sub string:”
Read sub
l2 = `Echo $sub | wc -c`
l2 = `expr $l2 – 1`
n = 1
m = 1
pos = 0
while [ $n -le $l1 ]
do
a = `Echo $main | cut -c $n`
b = `Echo $sub | cut -c $m`
if [ $a = $b ]
then
n = `expr $n + 1`
m = `expr $m + 1`
pos = `expr $n – $l2`
r = `expr $m – 1`
if [ $r -eq $l2 ]
then
break
fi
else
pos = 0
m = 1
n = `expr $n + 1`
fi
done
Echo “Position of sub string in main string is $pos”
11) Write a shell program to display the alternate digits in a given 7 digit number
starting from the first digit
Echo “Enter a 7 digit number”
Read num
n = 1
while [ $n -le 7 ]
do
a = `Echo $num | cut -c $n`
Echo $a
n = `expr $n + 2`
done
12) Write a shell program to find the gcd for the 2 given numbers
Echo “Enter two numbers with space in between”
Read a b
m = $a
if [ $b -lt $m ]
then
m = $b
fi
while [ $m -ne 0 ]
do
x = `expr $a % $m`
y = `expr $b % $m`
if [ $x -eq 0 -a $y -eq 0 ]
then
Echo “gcd of $a and $b is $m”
break
fi
m = `expr $m – 1`
done
13) Write a shell program to check whether a given string is palindrome or not.
Echo “Enter a string to be entered:”
Read str
Echo
len = `Echo $str | wc -c`
len = `expr $len – 1`
i = 1
j = `expr $len / 2`
while test $i -le $j
do
k = `Echo $str | cut -c $i`
l = `Echo $str | cut -c $len`
if test $k != $l
then
Echo “String is not palindrome”
exit
fi
i = `expr $i + 1`
len = `expr $len – 1`
done
Echo “String is palindrome”
14) Write a shell program to find the sum of the series
sum=1+1/2+…+1/n
Echo “Enter a number”
Read n
i = 1
sum = 0
while [ $i -le $n ]
do
sum = `expr $sum +  ( 10000 / $i )`
i = `expr $i + 1`
done
Echo “Sum n series is”
i = 1
while [ $i -le 5 ]
do
a = `Echo $sum | cut -c $i`
Echo -e “$ac”
if [ $i -eq 1 ]
then
Echo -e “.c”
fi
i = `expr $i + 1`
done
15) Write a shell script to find the smallest of three numbers
Echo “Enter 3 numbers with spaces in between”
Read a b c
s = $a
if [ $b -lt $s ]
then
s = $b
fi
if [ $c -lt $s ]
then
s = $c
fi
Echo “Smallest of $a $b $c is $s”
16) Write a shell program to add, subtract and multiply the 2 given numbers
passed as command line arguments
add = `expr $1 + $2`
sub = `expr $1 – $2`
mul = `expr $1 * $2`
Echo “Addition of $1 and $2 is $add”
Echo “Subtraction of $2 from $1 is $sub”
Echo “Multiplication of $1 and $2 is $mul”
17) Write a shell program to convert all the contents into the uppercase in a
particular file
Echo “Enter the filename”
Read filename
Echo “Contents of $filename before converting to uppercase”
Echo —————————————————-
cat $filename
Echo —————————————————-
Echo “Contents of $filename after converting to uppercase”
Echo —————————————————
tr ‘*a-z+‘ ‘*A-Z+‘ < $filename Echo ————————————————— 18) Write a shell program to
count the characters, count the lines and the words in a particular file Echo “Enter the filename” Read
file w = `cat $file | wc -w` c = `cat $file | wc -c` l = `grep -c “.” $file` Echo “Number of characters in $file is
$c” Echo “Number of words in $file is $w” Echo “Number of lines in $file is $l” 19) Write a shell program
to concatenate the contents of 2 files Echo “Enter first filename” Read first Echo “Enter second
filename” Read second cat $first > third
cat $second >> third
Echo “After concatenation of contents of entered two files”
Echo —————————————————-
cat third | more
Echo —————————————————-
20) Write a shell program to count number of words, characters, white spaces
and special symbols in a given text
Echo “Enter a text”
Read text
w = `Echo $text | wc -w`
w = `expr $w`
c = `Echo $text | wc -c`
c = `expr $c – 1`
s = 0
alpha = 0
j = ` `
n = 1
while [ $n -le $c ]
do
ch = `Echo $text | cut -c $n`
if test $ch = $j
then
s = `expr $s + 1`
fi
case $ch in
a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) alpha=`expr $alpha + 1`;;
esac
n = `expr $n + 1`
done
special = `expr $c – $s – $alpha`
Echo “Words = $w”
Echo “Characters = $c”
Echo “Spaces = $s”
Echo “Special symbols = $special”
24) Write a shell program to find factorial of given number
Echo “Enter a number”
Read n
fact = 1
i = 1
while [ $i -le $n ]
do
fact = `expr $fact * $i`
i = `expr $i + 1`
done
Echo “Factorial of $n is $fact”
25) Write a shell script to find the average of the numbers entered in command
line
n = $#
sum = 0
for i in $*
do
sum = `expr $sum + $i`
done
avg = `expr $sum / $n`
Echo “Average=$avg”
26) Write a shell script to sort the given numbers in descending order using
Bubble sort
Echo
i = 1
k = 1
Echo “Enter no. of integers to be sorted”
Read n
Echo “Enter the numbers”
while [ $i -le $n ]
do
Read num
x[$k] = `expr $num`
i = `expr $i + 1`
k = `expr $k + 1`
done
x[$k] = 0
k = 1
Echo “The number you have entered are”
while [ ${x[$k]} -ne 0 ]
do
Echo “$,x*$k+-”
k = `expr $k + 1`
done
k = 1
while [ $k -le $n ]
do
j = 1
while [ $j -lt $n ]
do
y = `expr $j + 1`
if [ ${x[$j]} -gt ${x[$y]} ]
then
temp = `expr ${x[$j]}`
x[$j] = `expr ${x[$y]}`
x[$y] = `expr $temp`
fi
j = `expr $j + 1`
done
k = `expr $k + 1`
done
k = 1
Echo “Number in sorted order…”
while [ ${x[$k]} -ne 0 ]
do
Echo “$,x*$k+-”
k = `expr $k + 1`
done
27) Write a shell program to find the sum of all the digits in a given 5
digit number
Echo “Enter a 5 digit number”
Read num
sum = 0
while [ $num -ne 0 ]
do
r = `expr $num % 10`
sum = `expr $sum + $r`
num = `expr $num / 10`
done
Echo “sum = $sum”
28) Write a shell script to generate fibonacci series
Echo “how many fibonacci numbers do u want “
Read limit
a = 0
b = 1
d = 1
Echo “————————————————————-”
Echo -n $a
Echo -n ” “
while test $d -le $limit
do
c = `expr ${a} + ${b}`
Echo -n $c
Echo -n ” “
b = $a
a = $c
d = `expr $d + 1`
done
29) Shell Script to check whether given year is leap year or not
Echo -n “Enter the year(yyyy) to find leap year :- “
Read year
d = `expr $year % 4`
b = `expr $year % 100`
c = `expr $year % 400`
if [ $d -eq 0 -a $b -ne 0 -o $c -eq 0 ]
then
Echo “year is leap year”
else
Echo “not leap year”
fi
30) Shell Script to print alternate digit when a 7 digit number is passed
Echo -n “Enter a 7 digit number:- “
Read number
len = `echo $number | wc -c`
flag = 1
while test $flag -le $len
do
Echo $number | cut -c$flag
flag = `expr $flag + 2`
done
31) Shell script to find average of number at given command line
total = 0
count = $#
for i #or u can append ( in $*) to get same result.
do
total = `expr $total + $i`
done
avg1 = `expr $total / $count`
avg2 = `expr $total % $count`
avg2 = `expr $avg2 * 100 / $count`
Echo “The Average is :- $avg1.$avg2″
32) Shell Script to reverse a inputted string and show it
Echo -n “enter the string u want to reverse:-”
Read string
len = `Echo -n $string |wc -c`
Echo “no of character is:- $len”
while test $len -gt 0
do
rev = $rev`Echo $string |cut -c $len`
len = `expr $len – 1`
done
Echo “the reverse string is:-$rev “
33) Shell script to find occurrence of particular digit in inputted number
Echo -n “enter any number:-”
Read number
Echo -n “which digit number do u want to count:-”
Read digit
len = `echo -n $number |wc -c`
Echo “the length of number is:-$len”
count = 0
while test $len -gt 0
do
flag = `Echo -n $number |cut -c $len`
if test $flag -eq $digit
then
count = `expr $count + 1`
fi
len = `expr $len – 1`
done
Echo “|$digit| occurred |$count| times in number ($number)”
34) Shell Script to find whether number given is even or odd
Echo -n “enter any integer number to find even and odd :-”
Read number
rem = `expr $number % 2`
if test $rem -eq 0
then
Echo “number is even”
else
Echo “number is odd”
fi
35) write shell script to generate fibonacci series
#!/bin/bash
#shell script to generate fibonacci series
echo “how many fibonacci numbers do u want “
read limit
a=0
b=1
d=1
echo “————————————————————-”
echo -n $a
echo -n ” “
while test $d -le $limit
do
c=`expr ${a} + ${b}`
echo -n $c
echo -n ” “
b=$a
a=$c
d=`expr $d + 1`
done
36) write shell script to find wheather a particular year is a leap year or not
#!/bin/bash
#shell script to find wheather a particular year is a leap year or not
echo -n “Enter the year(yyyy) to find leap year :- “
read year
d=`expr $year % 4`
b=`expr $year % 100`
c=`expr $year % 400`
if [ $d -eq 0 -a $b -ne 0 -o $c -eq 0 ]
then
echo “year is leap year”
else
echo “not leap year”
fi
37) write shell script to print alternate digits when a 7 digit number is passed as
input
#!/bin/bash
#shell script to print alternate digits when a 7 digit number is passed as input
echo -n “Enter a 7 digit number:- “
read number
len=`echo $number | wc -c`
flag=1
while test $flag -le $len
do
echo $number | cut -c$flag
flag=`expr $flag + 2`
done
38) write shell script to find average of numbers given at command line
#Tue May 28 11:12:41 MUT 2002
total=0
count=$#
for i #or u can append ( in $*) to get same result.
do
total=`expr $total + $i`
done
avg1=`expr $total / $count`
avg2=`expr $total % $count`
avg2=`expr $avg2 * 100 / $count`
echo “The Average is :- $avg1.$avg2″
39) write shell script to find wheather a given word is palindrome or not
#Sun Jun 9 12:06:14 MUT 2002 –By Mukesh
clear
echo -n “enter the name :-”
read name
len=`echo -n $name | wc -c`
echo “Length of the name is :-”$len
while [ $len -gt 0 ]
do
rev=$rev`echo $name | cut -c$len`
len=`expr $len – 1`
done
echo “Reverse of the name is :-”$rev
if [ $name = $rev ]
then echo “It is a palindrome”
else
echo “It is not a palindrome”
fi
40) write shell script to reverse a inputed string and show it.
#!/bin/bash
#shell script to reverse a inputed string and show it.
echo -n “enter the string u want to reverse:-”
read string
len=`echo -n $string |wc -c`
echo “no of character is:- $len”
while test $len -gt 0
do
rev=$rev`echo $string |cut -c $len`
len=`expr $len – 1`
done
echo “the reverse string is:-$rev “
41) write shell script to count occurence of a perticular digit in inputted number.
#!/bin/bash
#shell script to count occurence of a perticular digit in inputted number.
echo -n “enter any number:-”
read number
echo -n “which digit number do u want to count:-”
read digit
len=`echo -n $number |wc -c`
echo “the length of number is:-$len”
count=0
while test $len -gt 0
do
flag=`echo -n $number |cut -c $len`
if test $flag -eq $digit
then
count=`expr $count + 1`
fi
len=`expr $len – 1`
done
echo “|$digit| occured |$count| times in number ($number)”
42) write shell script to find even or odd.
#!/bin/bash
#shell script to find even or odd.
echo -n “enter any integer number to find even and odd :-”
read number
rem=`expr $number % 2`
if test $rem -eq 0
then
echo “number is even”
else
echo “number is odd”
fi
Exercise 6: Write a shell script to list all of the directory files in a directory.
Synopsis: This script lists all the sub-directories in a given directory
#
# Arguments: Expects 0 or 1 argument. Argument should be the name of a
# directory. If argument is omitted then the script will work on current
# directory.
#
# Syntax: ./06listdirs1.sh [<dir_name>]
#
# Returns: The list of all directories in a given directory/current directory
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/bash # Direct the script to use bash shell for its execution
# Check to see if correct number of arguments are passed
if [ $# -gt 1 ]
then
echo "Usage: ./06listdirs1.sh [<dir_name>]"
exit 1
elif [ $# -eq 1 ] # A directory is passed as an argument
then
if ! [ -d $1 ] # Check if the directory exists
then
echo "$1 is not a directory"
exit 2
fi
dir_to_search=$1 # Read the argument as the name of directory to search
else
dir_to_search="." # Directory to be searched is the current directory
fi
# Go to the search directory
cd $dir_to_search
# Loop through all the contents of the directory
for file_name in `ls`
do
# Check if the current file is a directory and if so display it
[ -d $file_name ] && echo $file_name "is a directory"
done
Exercise 5: Write a shell script that receives any number of file names as its
arguments, counts and reports the occurrence of each word that is present in the
first argument file on other argument files.
Synopsis: This script counts the frequency of each word (supplied in a text
# file) occuring in a group of files (also supplied as arguments)
#
# Arguments: Expects atleast 2 arguments. First argument is the name of the
# file which contains a list of words which are to be searched. Remaining
# arguments are the names of files in which the words are to be searched
#
# Syntax: ./05countwords.sh <search_file><file_name> [<file_name> ...]
#
# Returns: The frequency of each word in every file mentioned
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/bash # Direct the script to use bash shell for its execution
# Check to see if enough arguments are passed
if [ $# -lt 2 ]
then
echo "Usage: ./05countwords.sh <search_file><file_name> [<file_name> ...]"
exit 1
fi
search_file=$1 # Read the search file name
# Loop through each file supplied as argument to the command
for file_name in "$@"
do
# First file contains search words, so skip it
if [ "$file_name" = "$1" ]
then
continue
fi
# Display the file name
echo "--------------------"
echo $file_name
echo "--------------------"
# Check if the text file exists
if [ ! -f $file_name ]
then
echo "File "$file_name" does not exist"
exit 2
fi
# Loop through the search file reading one word per line
while read search_word
do
# Count the frequency of current search word in current file.
# To do that, first replace all tabs (011) and spaces (040) with
# newlines (012). Then remove all the characters except a-z, A-Z
# 0-9, - and newlines. Finally frequency of current search word
word_freq=`tr "[011040]" "[012012]" < $file_name | 
tr -cd "[a-zA-Z0-9-012]" | 
grep -c "$search_word"`
# Display the word and its frequency
echo $search_word $word_freq
done < $search_file
done
Exercise 4: Write a shell script that receives any number of file names as its
arguments, checks if every argument supplied is a file or a directory and reports
accordingly. Whenever the argument is a file, the number of lines on it is also
reported.
Synopsis: This script accepts any number of arguments as the names of files
# and directories, checks each argument if it is a file or a directory and
# reports accordingly, and also reports the number of lines if it is a file
#
# Arguments: Expects atleast 1 argument. Arguments should be the names of files
# and/or directories
#
# Syntax: ./04fileordir1.sh <file_name|dir_name> [<file_name|dir_name> ...]
#
# Returns: The supplied arguments as file names along with the type of file and
# number of lines if it is a file
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/bash # Direct the script to use bash shell for its execution
# Check to see if enough arguments are passed
if [ $# -lt 1 ]
then
echo "Usage: ./04fileordir1.sh <file_name|dir_name> [<file_name|dir_name> ...]"
exit 1
fi
# Loop through all the supplied arguments
for file_name in "$@"
do
# Check if the current file is regular
if [ -f $file_name ]
then
echo $file_name "is a file, and it contains " `cat $file_name | wc -l` 
"lines"
fi
# Check if the current file is a directory
if [ -d $file_name ]
then
echo $file_name "is a directory"
fi
done
Exercise 7: Write a shell script to find factorial of a given number
Synopsis: This script calculates the factorial a number passed as an argument
# to it
#
# Arguments: Expects 1 arguments which must be numeric
#
# Syntax: ./07fact.sh <number>
#
# Returns: Factorial of the number supplied as argument
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/bin/bash # Direct the script to use bash shell for its execution
# Check to see if 1 argument is passed and it is a number
if ( [ $# -ne 1 ] || echo $1 | grep -E "[^0-9]+" > /dev/null )
then
echo "Usage: ./07fact.sh <number>"
exit 1
fi
i=$1 # A counter
f=1 # Initiate factorial
# Decrease the counter and multiply with current factorial
# till counter becomes 1
while [ $i -gt 0 ]
do
f=`expr $f * $i` # Update the factorial
i=`expr $i - 1` # Decrease the counter by 1
done
echo $f # Display the factorial
1-. Write a Shell Script that takes a search string and file name from the terminal
& displays the results.
read a
read b
word= ‘grep $a $b’
if test ‘echo $word |wc –c’-eq1
then
echo “patern not found”
else
grep $a $b
fi
output-
sh ss1
enter the string to be searched
ashs
enter the file name
ss2
patern not found
2- Write a Shell Script that takes pattern and file name as command line
arguments and displays the results appropriately i.e. pattern found/pattern not
found.
if test $# -ne 2
then
echo “Invalid no. of arguments”
else
word=’grep $1 $2
if test ‘word | wc –c’ –eq1
then
echo ”pattern not found ”
else
grep $1 $2
echo “pattern found”
fi
fi
output
sh ss2 contents ss12
echo “ n” content are same second file is being deleted
echo “ n” content are different
pattern found
3- Write a Shell Script that accepts only three arguments from the command line.
The first argument is the pattern string, the second argument is the file name in
which the pattern is to be searches and the third argument is the file name in
which the result is to be stored.
if test $# -ne3
then echo “Invalid no. of arguments”
else
grep $1 $2 | cat>$3
if test –s $3
then
echo “pattern found”
cat $3
else
echo “pattern not found”
fi
output:
sh ss3 echo ss12 output
pattern found
echo “n ” content are same second file is being deleted
echo “ n” content are different
echo “ n” file does not exist
cat output
echo “ n” content are different
echo “ n” file does not exist.
4- Write a Shell Script that accepts a file name as a command line argument and
finds out if its a regular file or a directory. If its a regular file, then performs
various tests to see if it is readable, writable, executable etc.
if [-d $1]
then
echo It’s a directory
elif [-f $1]
then
echo file exist
if [-r $1]
then
echo file has read permission
echo the content are ----
cat $1
else
file don’t have read permission
fi
if [-w $1]
then
echo “ ”file have write permission
cat >>$1
else
echo you do not have write permission
fi
if [-x $1]
then
echo “ ” file have execute permission
else
you don’t have execute permission
fi
else
echo Nothing exist by this name
fi
Output:
$ sh ss4 free
file exist
file has read permission
the content are _ _ _ _ _
Ashish is a mca student
__ _ _ _ _ _ _ _
You have execute permission
5- Write a Shell Script that computes the factorial of a given number
echo “Enter the no. to compute its factorial”
read num
i=1
fact=1
while test $i –le $num
do
fact = “factorial of : $num is: $fact”
Output:
sh ss6
Enter the no. to compute its factorial
6
Factorial of :6 is: 720
6- Write a Shell Script that works like a calendar reminding the user of certain
things depending on the day of the week.
a= `date + % A`
echo “n” welcome Ashish
echo “n ” Today is $a
echo your task for today is as follows
case $a in
Monday) echo complete ur Monday task
;;
Tuesday) echo complete ur Tuesday task
;;
Wednesday) echo complete ur Wednesday task
;;
Thursday) echo complete ur Thursday task
;;
Friday) echo complete ur Friday task
;;
Saturday) echo complete ur Saturday task
;;
Sunday) echo complete ur Sunday task
;;
Esac
Output:
Sh ss7
Welcome ashish
Today is Sunday
Complete ur Sunday taske
7- Write a Shell Script that changes the extension of a group of files from txt to
doc
echo Before
ls *.txt
for i in `ls *.txt`
domv $i `echo $i|cut -f1 -d"."`.doc
done
echo After
ls *.doc
Output :
$sh ss8
Before
d.txt f.txt r.txt
After
d.doc e?q?w.doc f.doc q?w.doc r.doc w.doc
8- Write a Shell Script that accepts both file name and a set of patterns as
positional parameters to a script.
fn=$1
shift
for i in $*
do
grep $i
$fn
done
Output:
ashish@ASHISH-PC:~/File$ sh SS9 ss8 txt doc
ls *.txt
for i in `ls *.txt`
mv $i `echo $i|cut -f1 -d"."`.doc
ls *.doc
ashish@ASHISH-PC:~/File$
9- Write a Shell Script which will redirect the output of the date command
without the time into a file.
echo Enter the file name
read file
a=`date|cut -b 1-11,25-28`
echo $a|tee -a $file
clear
echo "n"$filesucessfully created
echo "n""Content of file is :"`cat $file`
Output :
sh ss10
Enter the file name
ss2
Thu Nov 20 2008
ss2 sucessfully created
Content of file is :if test $# -ne 2 then echo "Invalid no. of arguments" else word=`grep $1 $2` if test
`echo $word|wc -c` -eq 1 then echo "Pattern not found" else grep $1 $2 fi fi Thu Nov 202008
10- Write a Shell Script (using while loop) to execute endlessly (until terminated
by user) a loop which displays contents of current directory, disk space status,
sleep for 30 seconds and display the users currently logged in on the screen.
char=y
while [ $char ="y" ]
do
ls
df -t
sleep 30
who
echo"Want to continue(y/n)?"
read char
done
Output :
sh ss11
cold gold sold ss11 ss14 SS17 ss2 ss22 SS25 SS28 SS30 ss6 SS9
e.txt output ss1 ss12 ss15 ss18 SS20 ss23 SS26 SS29 ss4 ss7 tr.c
f1 q.txt ss10 ss13 ss16 SS19 ss21 SS24 SS27 ss3 SS5 ss8 w.txt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 4845056 2476544 2124328 54% /
varrun 452316 96 452220 1% /var/run
varlock 452316 0 452316 0% /var/lock
udev 452316 56 452260 1% /dev
devshm 452316 12 452304 1% /dev/shm
lrm 452316 39760 412556 9% /lib/modules/2.6.24-19-generic/volatile
gvfs-fuse-daemon 4845056 2476544 2124328 54% /home/ashish/.gvfs
ashish tty7 2008-11-20 11:20 (:0)
ashishpts/0 2008-11-20 11:25 (:0.0)
Want to continue(y/n)?
11- Write a Shell Script that receives two file names as arguments. It should check
whether content of the two files is same or not. If they are same, second file
should be deleted.
if [ -f $1 -a -f $2 ]
then
if diff $1 $2
then
cat $1
echo "n"
cat $2
echo "n" Contents are same Second file is being deleted
rm $2
else
echo"n" Contents are different
fi
else
echo "n" File does not exist
fi
Output:
$ sh ss12 dfrt
Ashish
Ashish
Contents are same Second file is being deleted
$
12 - If a number is input through the keyboard, WASS to calculate sum of its digits.
echo Enter a no.
read num
sum=0
while true
do
if test `expr $num % 10` -gt 0
then
temp=`expr $num % 10`
sum=`expr $sum + $temp`
num=`expr $num / 10`
else
echo $sum
exit
fi
Output:
sh ss13
Enter a no.
2345
14
13- Write a Shell Script that performs a count-down either from 10 (default) or
from the value that is entered by the user.
echo "Enter the Countdown time."
read n
clear
while [ $n -ge 0 ]
do
echo $n
sleep 1
n=`expr $n – 1`
done
echo Count down timer stopped
Output:
sh ss14
Enter the Countdown time.
3
3
2
1
0
Count down timer stopped
14- Write a Shell Script which takes a command line argument of Kms and by
default converts that number into meters. Also provide options to convert km to
dm and km to cm.
Km=$1
mt=`expr $km * 1000`
echo "1.) km to dm"
echo "2 ) km to cm"
echo Enter your choice
read num
case $num in
1)dm=`expr $km * 10000`
echo $km in meters is :$mt and in decimeters is : $dm
;;
2)cm=`expr $km * 100000`
echo $km in meters is :$mt and in centimeters is : $cm
;;
esac
Output:
sh ss15 5
5 kms in meters is 5000
km to dm
km to cm
Enter your choice
1
5 in meters is- 5000 and in decimeters is 50000
15- Write a Shell Script using for loop, which displays the message "Welcome to
the UNIX System".
for var in $*
do
echo "Welcome to Unix System"
shift 1
done
Output:
sh ss16
Welcome to Unix System
16- Write a Shell Script to change the file name of all files in a directory from
lower-case to upper-case.
for i in *
do
mv $i `echo $i|tr "[:lower:]" "[:upper:]"`
done
Output:
sh SS17
mv: `COLD' and `COLD' are the same file
mv: `E.TXT' and `E.TXT' are the same file
mv: `F1' and `F1' are the same file
mv: `GOLD' and `GOLD' are the same file
mv: `Q.TXT' and `Q.TXT' are the same file
mv: `SOLD' and `SOLD' are the same file
mv: `SS1' and `SS1' are the same file
COLD GOLD SOLD SS11 SS14 SS17 SS2 SS22 SS25 SS28 SS30 SS6 SS9
E.TXT OUTPUT SS1 SS12 SS15 SS18 SS20 SS23 SS26 SS29 SS4 SS7 TR.C
F1 Q.TXT SS10 SS13 SS16 SS19 SS21 SS24 SS27 SS3 SS5 SS8 W.TXT
17- Write a Shell Script that examines each file in the current directory. Files
whose namesend in old are moved to a directory named old files and files whose
names end in .c aremoved to directory named cprograms.
echo Before "n"
ls -l
mkdiroldfilescprograms
for var in `ls`
do
if test $var = *old
then
echo "n" File $var is moved to old files directory
mv $var old files
fi
if test $var = *.c
then
echo"n" File $var is moved to cprograms directory
mv $varcprograms
fi
done
cd oldfiles
echo "n" Files in oldfiles
ls -l
cd ..
echo "n" After"n"
ls -l
Output:
sh SS18
Before
total 144-rwxrwxrwx 1 ashishashish 66 2008-11-20 10:07 COLD
-rwxrwxrwx 1 ashishashish 0 2008-11-20 10:07 E.TXT
-rwxrwxrwx 1 ashishashish 7 2008-11-20 10:07 F1
-rwxrwxrwx 1 ashishashish 54 2008-11-20 10:07 GOLD
Files in oldfiles
total 0
After
total 152
-rwxrwxrwx 1 ashishashish 66 2008-11-20 10:07 COLD
drwxr-xr-x 2 ashishashish 4096 2008-11-20 12:04 cprograms
-rwxrwxrwx 1 ashishashish 0 2008-11-20 10:07 E.TXT
-rwxrwxrwx 1 ashishashish 7 2008-11-20 10:07 F1
-rwxrwxrwx 1 ashishashish 54 2008-11-20 10:07 GOLD
18- Write a Shell Script which searches all files in the given directory (to be taken
as command line argument) for the file having the title (to be taken as command
line argument), as the first line in the file.
a) Display the contents of the searched file.
b) In the end, printthe the file is ###, where
### is small-sized if total no. of lines is <50 data-blogger-escaped-span="span">
### is medium-sized if total no. of lines between 50&100
### is large-sized.
for i in `ls $dirnm`
do
f=`echo $1/$i`
if [ -f $f ]
then
if [ `cat $f|head -1` = $2 ]
then
cat $f
if [ `cat $f|wc -l` -lt 50 ]
then
echo $i is small sized
fi
if [ `cat $f|wc -l` -ge 50 -a `cat $f|wc -l` -lt 100 ]
then
echo $i is a medium sized
fi
if [ `cat $f|wc -l` -gt 100 ]
then
echo $i is large sized
fi
fi
fi
done
Output:
sh ss19 newdir AMITY
AMITY
Amity University
file1 is small sized
19- Write a shell script which reports names and sizes of all files in a directory
(directory would be supplied as an argument to the shell script) whose size is
exceeding 1000 bytes.The file names should be printed in descending order of
their sizes. The total number of such files should also be reported.
Cd $1
mkdir
tmp$1
for i in *
do
if [ -f $i ]
then
tmp=`ls -l $i|cut -f5 -d" "`
if [ $tmp -gt 1000 ]
then
ln $i tmp$1/$i
fi
fi
done
ls -lS tmp$1
echo Total number of such files is : `ls tmp$1|wc -w`
rm -r tmp$1
output:
sh SS20
total 4-rw-r--r-- 2 ashishashish 1392 2008-11-20 11:02 unix output
Total number of such files is : 1
20- WASS for renaming each file in the directory such that it will have the current
shell PID as an extension. The shell script should ensure that the directories do
not get renamed.
for var in `ls`
do
if test -f $var
then
a=`echo $$`
mv $var $var.$a
fi
done
echo "n" File name changed:"n"
ls -l
Output:
sh SS21.7600.a
File name changed:
total 152
-rwxrwxrwxashishashish 66 2008-11-20 10:07 COLD.7600.a.a
drwxr-xr-x 2 ashishashish 4096 2008-11-20 12:04 cprograms
-rwxrwxrwx 1 ashishashish 0 2008-11-20 10:07 E.TXT.7600.a.a
-rwxrwxrwx 1 ashishashish 7 2008-11-20 10:07 F1.7600.a.a
-rwxrwxrwx 1 ashish ashish54 2008-11-20 10:07 GOLD.7600.a.a
drwxr-xr-x 2 ashishashish 4096 2008-11-20 12:04 oldfiles
21- WAP to calculate and print the first m Fibonacci numbers.
echo Enter the series length
read num
x=0
y=1
if test $num -eq 1
then echo $x
else if test $num -eq 2
then echo "$xn$y"
else
echo "$xn$y"
i=3
while test $i -le $num
do
temp=`expr $y + $x`
x=$y
y=$temp
echo $y
i=`expr $i + 1`
done
fi
fi
Output:
sh SS22
Enter the series length
6
0
1
1
2
3
22- WASS that will receive any number of file names as arguments. The shell
script should check whether such files already exist. If they do, then it should be
reported. The files that do not exist should be created in a sub-directory called my
dir. The shell script should first check whether the sub-directory my dir exists in
the current directory. If it doesn’t exist,then it should be created. If my dir already
exists, then it should be reported along with the number of files that are currently
present in my dir.
if [ -e mydir ]
then
echo "Directory : mydir exist"
else
echo Do not exist
mkdirmydir
fi
for a in $*
do
echo $a
then
echo "File does not exist "
else
echo “file d
touch $a
mv $a mydir
fi
done
Output:
sh SS23 SS22
Directory : mydir exist
SS22
File does not exists
23- A shell script receives even number of file names. Suppose four file names are
supplied,then the first file should get copied into second file, the third file should
get copied into fourth and so on. If odd number of file names is supplied then no
copying should take place and an error message should be displayed.
if [ `expr $# % 2` -ne 0 ]
thenecho Enter even number of parameters
else
i=0
for k in $*
do
i=`expr $i + 1`
if [ $i -eq 1 ]
then
temp1=$k
fi
if [ $i -eq 2 ]
then
temp2=$k
i=0
cp $temp1 $temp2
fi
done
fi
cat
Output:
$ cat>txt
File Ashish lives in Delhi$ cat>doc
Ashish is a student of MCA$ cat>tree
Ashish is a good student$ cat>wee
His roll no- is A1004807024
$ sh SS24 txt doc tree wee
His roll no- is A1004807024 Ashish is good student Ashish lives id Delhi Ashish is a student of BCA
24- WASS to identify all zero-byte files in the current directory and delete them. Before proceeding with
deletion, the shell script should get a conformation from the user.
for i in *
do
if [ -e $i -a -f $i ]
then
if [ -s $i ]
then
echo
else
rm -i $i
fi
fi
done
Output:
sh SS25
rm: remove regular empty file `E.TXT'? y
rm: remove regular empty file `Q.TXT'? n
rm: remove regular empty file `W.TXT'? n
25- WASS to compute the GCD and LCM of two numbers.
echo Enter First number
read n1
echo Enter Second number
read n2
if [ $n1 -lt $n2 ]
then
i=$n1
else
i=$n2
fi
flag=0
while [ $flag -eq 0 ]
do
if [ `expr $n1 % $i` -eq 0 -a `expr $n2 % $i` -eq 0 ]
then
echo GCD of $n1 and $n2 is $i
flag=1
fi
i=`expr $i – 1`
done
Output:
sh SS26
Enter First number
4
Enter Second number
8
GCD of 4 and 8 is 4
26- Two numbers are entered through the keyboard. WAP to find the value of one number raised to the
power of another.
read b
echo Enter power
read p
powr=$p
result=1
while [ $p -ge 1 ]
do
result=`expr $result * $b`
p=`expr $p – 1`
done
echo $b raised to the power $powr is $result
Output:
sh SS27
Enter a number
4
Enter power
2
4 raised to the power 2 is 16
27- WASS that prompts the user for the password. The user has maximum of 3 attempts. If the user
enters the correct password, the message “Correct Password” is displayed else the message “Wrong
Password”.
echo Set the password first
read passw
i=0
while [ $i -lt 3 ]
do
echo Enter password
read p
if [ $p = $passw ]
then
echo Correct Password
i=3
else
echo Wrong password
i=`expr $i + 1`
fi
done
Output:
sh SS28
Set the password first
ashish
Enter password
ashish
Correct Password
28- WASS that repeatedly asks the user repeatedly for the “Name of the Institution” until the user gives
the correct answer.
Flag=0
while [ $flag -eq 0 ]
do
echo Enter name of your institute in capital letters
read inst
if [ $inst = "AMITY" ]
then
echo Correct Answer
flag=1
else
echo Enter Again
fi
done
output:
sh SS29
Enter name of your institute in capital letters
AMITY
Correct Answer
29- WAP to generate all combinations of 1, 2 and 3 using for loop.
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:
sh SS30
111
112
113
121
122
123
131
132
133
211
212
213
221
222
223
231
232
233
311
312
313
321
322
323
331
332
333

Weitere ähnliche Inhalte

Was ist angesagt?

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CDimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑDimitris Psounis
 
Unit II chapter 4 Loops in C
Unit II chapter 4 Loops in CUnit II chapter 4 Loops in C
Unit II chapter 4 Loops in CSowmya Jyothi
 
Managing I/O operations In C- Language
Managing I/O operations In C- LanguageManaging I/O operations In C- Language
Managing I/O operations In C- LanguageRavindraSalunke3
 
Yazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriYazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriBGA Cyber Security
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfFadouaBouafifSamoud
 
Top C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerTop C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerVineet Kumar Saini
 
Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Olve Maudal
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfFadouaBouafifSamoud
 
Applications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielApplications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielAhmed-Chawki Chaouche
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Dimitris Psounis
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11Dimitris Psounis
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitésalah fenni
 
Decision statements in c language
Decision statements in c languageDecision statements in c language
Decision statements in c languagetanmaymodi4
 
C multiple choice questions and answers pdf
C multiple choice questions and answers pdfC multiple choice questions and answers pdf
C multiple choice questions and answers pdfchoconyeuquy
 
Web Uygulamalarında Kayank Kod Analizi – II
Web Uygulamalarında Kayank Kod Analizi – IIWeb Uygulamalarında Kayank Kod Analizi – II
Web Uygulamalarında Kayank Kod Analizi – IIMehmet Ince
 

Was ist angesagt? (20)

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
Unit II chapter 4 Loops in C
Unit II chapter 4 Loops in CUnit II chapter 4 Loops in C
Unit II chapter 4 Loops in C
 
C tutorial
C tutorialC tutorial
C tutorial
 
Managing I/O operations In C- Language
Managing I/O operations In C- LanguageManaging I/O operations In C- Language
Managing I/O operations In C- Language
 
Yazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriYazılım Güvenliği Temelleri
Yazılım Güvenliği Temelleri
 
Ch4- les structures répétitives.pdf
Ch4- les structures répétitives.pdfCh4- les structures répétitives.pdf
Ch4- les structures répétitives.pdf
 
Top C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerTop C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
 
Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)Modern C++ Explained: Move Semantics (Feb 2018)
Modern C++ Explained: Move Semantics (Feb 2018)
 
Ch3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdfCh3-les structures conditionnelles.pdf
Ch3-les structures conditionnelles.pdf
 
Applications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielApplications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matériel
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
Exercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivitéExercices en turbo pascal sur la récursivité
Exercices en turbo pascal sur la récursivité
 
Decision statements in c language
Decision statements in c languageDecision statements in c language
Decision statements in c language
 
C multiple choice questions and answers pdf
C multiple choice questions and answers pdfC multiple choice questions and answers pdf
C multiple choice questions and answers pdf
 
Web Uygulamalarında Kayank Kod Analizi – II
Web Uygulamalarında Kayank Kod Analizi – IIWeb Uygulamalarında Kayank Kod Analizi – II
Web Uygulamalarında Kayank Kod Analizi – II
 

Andere mochten auch

CRONtab Tutorial
CRONtab TutorialCRONtab Tutorial
CRONtab TutorialJoseph ...
 
Shell Scripting With Arguments
Shell Scripting With ArgumentsShell Scripting With Arguments
Shell Scripting With ArgumentsAlex Shaw III
 
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Joachim Jacob
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaJames Falkner
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell ScriptingRaghu nath
 
Bash shell
Bash shellBash shell
Bash shellxylas121
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting BasicsDr.Ravi
 
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...Codemotion
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Scriptsbmguys
 
Linux command ppt
Linux command pptLinux command ppt
Linux command pptkalyanineve
 

Andere mochten auch (12)

Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
CRONtab Tutorial
CRONtab TutorialCRONtab Tutorial
CRONtab Tutorial
 
Shell Scripting With Arguments
Shell Scripting With ArgumentsShell Scripting With Arguments
Shell Scripting With Arguments
 
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell Scripting
 
Bash shell
Bash shellBash shell
Bash shell
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting Basics
 
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
Serverless Data Architecture at scale on Google Cloud Platform - Lorenzo Ridi...
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Script
 
Linux command ppt
Linux command pptLinux command ppt
Linux command ppt
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 

Ähnlich wie Quize on scripting shell

Linux admin interview questions
Linux admin interview questionsLinux admin interview questions
Linux admin interview questionsKavya Sri
 
Say whether each of the following statements is true (“T”) or false .pdf
Say whether each of the following statements is true (“T”) or false .pdfSay whether each of the following statements is true (“T”) or false .pdf
Say whether each of the following statements is true (“T”) or false .pdfRBMADU
 
Unix And Shell Scripting
Unix And Shell ScriptingUnix And Shell Scripting
Unix And Shell ScriptingJaibeer Malik
 
RHCSA EX200 - Summary
RHCSA EX200 - SummaryRHCSA EX200 - Summary
RHCSA EX200 - SummaryNugroho Gito
 
The best unix shell scripting interview questions 2018 learn now!
The best unix shell scripting interview questions 2018   learn now!The best unix shell scripting interview questions 2018   learn now!
The best unix shell scripting interview questions 2018 learn now!mia avery
 
Bozorgmeh os lab
Bozorgmeh os labBozorgmeh os lab
Bozorgmeh os labFS Karimi
 
OverviewIn this assignment you will write your own shell i.docx
OverviewIn this assignment you will write your own shell i.docxOverviewIn this assignment you will write your own shell i.docx
OverviewIn this assignment you will write your own shell i.docxalfred4lewis58146
 
Shell Scripts
Shell ScriptsShell Scripts
Shell ScriptsDr.Ravi
 
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointJavaTpoint.Com
 
390aLecture05_12sp.ppt
390aLecture05_12sp.ppt390aLecture05_12sp.ppt
390aLecture05_12sp.pptmugeshmsd5
 
shellScriptAlt.pptx
shellScriptAlt.pptxshellScriptAlt.pptx
shellScriptAlt.pptxNiladriDey18
 
Shell Scripting and Programming.pptx
Shell Scripting and Programming.pptxShell Scripting and Programming.pptx
Shell Scripting and Programming.pptxHarsha Patel
 
Shell Scripting and Programming.pptx
Shell Scripting and Programming.pptxShell Scripting and Programming.pptx
Shell Scripting and Programming.pptxHarsha Patel
 
$ filecount etcetc 153 ordinary 3 executable 7 links 124.docx
$ filecount etcetc  153 ordinary  3 executable  7 links  124.docx$ filecount etcetc  153 ordinary  3 executable  7 links  124.docx
$ filecount etcetc 153 ordinary 3 executable 7 links 124.docxmayank272369
 

Ähnlich wie Quize on scripting shell (20)

Linux admin interview questions
Linux admin interview questionsLinux admin interview questions
Linux admin interview questions
 
Say whether each of the following statements is true (“T”) or false .pdf
Say whether each of the following statements is true (“T”) or false .pdfSay whether each of the following statements is true (“T”) or false .pdf
Say whether each of the following statements is true (“T”) or false .pdf
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
Unix And Shell Scripting
Unix And Shell ScriptingUnix And Shell Scripting
Unix And Shell Scripting
 
RHCSA EX200 - Summary
RHCSA EX200 - SummaryRHCSA EX200 - Summary
RHCSA EX200 - Summary
 
Shell programming
Shell programmingShell programming
Shell programming
 
The best unix shell scripting interview questions 2018 learn now!
The best unix shell scripting interview questions 2018   learn now!The best unix shell scripting interview questions 2018   learn now!
The best unix shell scripting interview questions 2018 learn now!
 
Bozorgmeh os lab
Bozorgmeh os labBozorgmeh os lab
Bozorgmeh os lab
 
OverviewIn this assignment you will write your own shell i.docx
OverviewIn this assignment you will write your own shell i.docxOverviewIn this assignment you will write your own shell i.docx
OverviewIn this assignment you will write your own shell i.docx
 
Shell Scripts
Shell ScriptsShell Scripts
Shell Scripts
 
C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
 
50 Most Frequently Used UNIX Linux Commands -hmftj
50 Most Frequently Used UNIX  Linux Commands -hmftj50 Most Frequently Used UNIX  Linux Commands -hmftj
50 Most Frequently Used UNIX Linux Commands -hmftj
 
390aLecture05_12sp.ppt
390aLecture05_12sp.ppt390aLecture05_12sp.ppt
390aLecture05_12sp.ppt
 
shellScriptAlt.pptx
shellScriptAlt.pptxshellScriptAlt.pptx
shellScriptAlt.pptx
 
Bash production guide
Bash production guideBash production guide
Bash production guide
 
Shell Scripting and Programming.pptx
Shell Scripting and Programming.pptxShell Scripting and Programming.pptx
Shell Scripting and Programming.pptx
 
Shell Scripting and Programming.pptx
Shell Scripting and Programming.pptxShell Scripting and Programming.pptx
Shell Scripting and Programming.pptx
 
$ filecount etcetc 153 ordinary 3 executable 7 links 124.docx
$ filecount etcetc  153 ordinary  3 executable  7 links  124.docx$ filecount etcetc  153 ordinary  3 executable  7 links  124.docx
$ filecount etcetc 153 ordinary 3 executable 7 links 124.docx
 
Unix
UnixUnix
Unix
 
Slides
SlidesSlides
Slides
 

Quize on scripting shell

  • 1. 1. #! is called as Ans. shebang 2. Which of the following is not a kind of shell Ans. dsh 3. [ is eqvivalent to Ans. test 4. The difference between printf and echo is Ans. Echo adds a new line after printing, printf does not 5. ". " is used to match Ans. Any one character 6. Which of the following symbols is used as prefix to access the value of variables in scripting Ans. $ 7. The comparison operator " -eq " is used for Ans. Numbers 8. A comment line in a script begins with Ans. # 9. Every line in a shell script ends with
  • 2. Ans. There is no rule 10. Scripts are made executable using the command Ans. chmod Linux/Unix Shell related questions 1. How do you find out what’s your shell? - echo $SHELL 2. What’s the command to find out today’s date? - date 3. What’s the command to find out users on the system? - who 4. How do you find out the current directory you’re in? - pwd 5. How do you remove a file? - rm 6. How do you remove a directory and its subdirectories - rm -rf 7. How do you find out your own username? - whoami 8. How do you send a mail message to somebody? - mail somebody@techinterviews.com -s ‘Your subject’ -c ‘cc@techinterviews.com‘ 9. How do you count words, lines and characters in a file? - wc 10. How do you search for a string inside a given file? - grep string filename 11. How do you search for a string inside a directory? - grep string * 12. How do you search for a string in a directory with the subdirectories recursed? - grep -r string * 13. What are PIDs? - They are process IDs given to processes. A PID can vary from 0 to 65535. 14. How do you list currently running process? - ps 15. How do you stop a process? - kill pid 16. How do you find out about all running processes? - ps -ag 17. How do you stop all the processes, except the shell window? - kill 0 18. How do you fire a process in the background? - ./process-name &
  • 3. 19. How do you refer to the arguments passed to a shell script? - $1, $2 and so on. $0 is your script name. 20. What’s the conditional statement in shell scripting? - if ,condition- then … fi 21. How do you do number comparison in shell scripts? - -eq, -ne, -lt, -le, -gt, -ge 22. How do you test for file properties in shell scripts? - -s filename tells you if the file is not empty, -f filename tells you whether the argument is a file, and not a directory, -d filename tests if the argument is a directory, and not a file, -w filename tests for writeability, -r filename tests for readability, -x filename tests for executability 23. How do you do Boolean logic operators in shell scripting? - ! tests for logical not, -a tests for logical and, and -o tests for logical or. 24. How do you find out the number of arguments passed to the shell script? - $# 25. What’s a way to do multilevel if-else’s in shell scripting? - if {condition} then {statement} elif {condition} {statement} fi 26. How do you write a for loop in shell? - for {variable name} in {list} do {statement} done 27. How do you write a while loop in shell? - while {condition} do {statement} done 28. How does a case statement look in shell scripts? - case {variable} in {possible-value-1}) {statement};; {possible-value-2}) {statement};; esac 29. How do you read keyboard input in shell scripts? - read {variable-name} 30. How do you define a function in a shell script? - function-name() { #some code here return } 31. How does getopts command work? - The parameters to your script can be passed as -n 15 -x 20. Inside the script, you can iterate through the getopts array as while getopts n:x option, and the variable $option contains the value of the entered option. 13. Write a script calculate, which accepts 4 arguments a, b, c, d and prints the value of a × 20 − b × 2 + c ÷ d to standard output. An example of executing the script: $ calculate 2 12 5 2 The value of "2*20 - 12*2 + 5/2" is 18
  • 4. r=$(((($1*20))-(($2*2))+(($3/$4)))) echo $r [abcd@linuxunix]$ chmod +x u13.sh [abcd@linuxunix]$ ./u13.sh 1 1 1 1 19 Chapter 8 Solutions Review Questions 1. Because Standard Error and Standard Ouput represent the results of a command and Standard Input represents the input required for a command, only Standard Error and Standard Ouput can be redirected to/from a file. True or False? Answer: False 2. Before a user-defined variable can be used by processes that run in subshells, that variable must be __________. a. imported b. validated by running the env command c. exported d. redirected to the BASH shell Answer: c 3. The alias command can be used to make a shortcut to a single command. True or False?
  • 5. Answer: True 4. Which of the following files is always executed immediately after a user logs in to a Linux system and receives a BASH shell? a. /etc/profile b. ~/.bash_profile c. ~/.bash_login d. ~/.profile Answer: a 5. Which command could you use to see a list of all environment and user-defined shell variables as well as their current values? a. ls /var b. env c. set d. echo Answer: c 6. Every if construct begins with if and must be terminated with? a. end b. endif c. stop d. fi Answer: d 7. Which of the following will display the message welcome home if the cd /home/user1 command is successfully executed? a. cd /home/user1 && echo “welcome home”
  • 6. b. cat “welcome home” || cd /home/user1 c. cd /home/user1 || cat “welcome home” d. echo “welcome home” && cd /home/user1 Answer: a 8. The current value for the HOME variable is displayed by which of the following commands? (Choose all that apply.) a. echo HOME= b. echo ~ c. echo $HOME d. echo ls HOME Answer: b, c 9. Which of the following file descriptor numbers represents stdout? a. 2 b. 0 c. 1 d. 3 Answer: c 10. Which of the following operators reverses the meaning of a test statement? a. #! b. -o c. -a d. ! Answer: d
  • 7. 11. What would be the effect of using the alias command to make an alias for the date command named cat in honor of your favorite pet? a. It cannot be done as there already is an environment variable cat associated with the cat command. b. It cannot be done as there already is a command cat on the system. c. When you use the cat command at the command prompt with the intention of viewing a text file, the date appears instead. d. There is no effect until the alias is imported as it is a user-declared variable. Answer: c 12. How do you indicate a comment line in a shell script? a. There are no comment lines in a shell script. b. Begin the line with #!. c. Begin the line with !. d. Begin the line with #. Answer: d 13. You have redirected Standard Error to a file called Errors. You view the contents of this file afterward and notice that there are six error messages. After repeating the procedure, you notice that there are only two error messages in this file. Why? a. After you open the file and view the contents, the contents are lost. b. The system generated different Standard Ouput. c. You did not append the Standard Error to the Error file and as a result, it was overwritten when the command was run a second time.
  • 8. d. You must specify a new file each and every time you redirect as the system creates the specified file by default. Answer: c 14. The sed and awk commands are filter commands commonly used to format data within a pipe. True or False? Answer: True 15. What is wrong with the following command string ls /etc/hosts >listofhostfile? a. Nothing is wrong with the command. b. The file descriptor was not declared; unless 1 for Standard Ouput or 2 for Standard Error is indicated, the command will fail. c. The ls command is one of the commands that cannot be used with redirection; you must use | to pipe instead. d. The file listofhostfile will always only contain Standard Error as a file descriptor was not declared. Answer: a 16. Which of the following is not necessarily generated by every command on the system? (Choose all that apply.) a. Standard Input b. Standard Deviation c. Standard Ouput d. Standard Error Answer: a, b 17. Which construct can be used in a shell script to read Standard Input and place it in a variable? a. read
  • 9. b. sum c. verify d. test Answer: a 18. A variable identifier must _________. a. not begin with a number b. not begin with a capital letter c. start with a number d. start with an underscore “_” Answer: a 19. What does >> accomplish when entered on the command line after a command? a. It redirects both Standard Error and Standard Ouput to the same location. b. It does not accomplish anything. c. It redirects Standard Error and Standard Input to the same location. d. It appends Standard Output to a file. Answer: d 20. Consider the following shell script: echo -e “What is your favorite color?--> c” read REPLY if [ “$REPLY” = “red” –o “$REPLY” = “blue” + then echo “The answer is red or blue.”
  • 10. else echo “The answer is not red nor blue.” fi What would be displayed if a user executes this program and answered Blue when prompted? a) The answer is red or blue. b) The answer is not red nor blue. c) The code would cause an error. d) The answer is red or blue. The answer is not red nor blue. Answer: b #! /bin/bash #this file displays a list of currently logged in users #followed by the system hostname, time and date, disk #usage, current working directory and pathname to the BASH #shell echo “Users currently on the system: " who echo “nThe system’s hostname is: c" echo $HOSTNAME echo “nThe current date and time is: c" date echo “nCurrent disk usage is: " df echo “nYour present working directory is: c“ echo $PWD
  • 11. echo “nThe pathname to the bash shell is: c“ echo $BASH Discovery Exercise 7 #!/bin/bash #This program calculates a grade from a number entered by #the user echo “Please enter a grade between 0 and 100 -->c" read GRADE if [ $GRADE –lt 50 ] then echo “The grade is F” elif [ $GRADE –lt 60 –a $GRADE –ge 50 ] then echo “The grade is D” elif [ $GRADE –lt 70 –a $GRADE –ge 60 ] then echo “The grade is C” elif [ $GRADE –lt 80 –a $GRADE –ge 70 ] then echo “The grade is B” elif [ $GRADE –le 100 –a $GRADE ge 80 ] then
  • 12. echo “The grade is A” else echo "Invalid number – please try again" fi Exercise 1: Write a shell script that accepts a file name, starting and ending line numbers as arguments and displays all the lines between the given line numbers. Solution 2 ... #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ # # 01readlines1.sh # # Author: Mohammed AhsanSiddiqui (ahsan.academic@gmail.com) # # Synopsis: This script displays the lines of a text file between given starting # line number and ending line number. It uses 'read' command to read individual
  • 13. # lines of text file # # Arguments: Expects 3 arguments. First argument is the file name, second # argument is the starting line number (an integer) and third argument also # an integer which indicates the ending line number # # Syntax: ./01readlines1.sh <text_file><start_line_num><end_line_num> # # Returns: All the text lines between starting line number and ending line # number # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
  • 14. #!/bin/bash # Direct the script to use bash shell for its execution # Check to see if enough arguments are passed if [ $# -lt 3 ] then echo "Usage: ./01readlines1.sh <text_file><start_line_num><end_line_num>" exit 1 fi # Ignore if extra arguments supplied if [ $# -gt 3 ] then
  • 15. echo "Usage: ./01readlines1.sh <text_file><start_line_num><end_line_num>" echo "Warning !!!: Ignoring extra arguments !!!" fi file_name=$1 # Read the file name start_line_num=$2 # Read the starting line number end_line_num=$3 # Read the ending line number # Check if the text file exists if [ ! -f $file_name ] then echo "File $file_name does not exist"
  • 16. exit 2 fi # Check if the starting line number is supplied as an integer if ! [[ $start_line_num =~ ^[0-9]+$ ]] then echo "Starting line number should be an integer" exit 3 fi # Check if the ending line number is supplied as an integer if ! [[ $end_line_num =~ ^[0-9]+$ ]] then
  • 17. echo "Ending line number should be an integer" exit 3 fi exec 3<&0 # Redirect standard input temporarily to file descriptor 3 exec 0<$file_name # Redirect the standard input from the text file i=0 # Initiate a variable to keep track of current line read # from input file # Read next line, and keep looping while there are still more lines to read while read line
  • 18. do i=`expr $i + 1` # Update the line number by incrementing it by 1 # Check to see if the current line number is between the range if ( [ $i -ge $start_line_num ] && [ $i -le $end_line_num ] ) then echo $i " " $line # Display the line number and the line text fi done exec 0<&3 # Restore back the original standard input Write a shell script that allows a user to enter his or her top three ice cream flavors. Your script should then print out the name of all three flavors.
  • 19. #!/bin/bash read -p "Enter your three ice cream flavors : " ice1 ice2 ice3 echo "Thanks $USER!" echo "1# ${ice1}" echo "2# ${ice2}" echo "#3 ${ice3}" Write a shell script that allows a user to enter any Internet domain name (host name such as www.cyberciti.biz). Your script should than print out the IP address of the Internet domain name. #!/bin/bash # Version 1 read -p "Enter any Internet domain name : " domainname host "${domainname}" OR #!/bin/bash # Version 2 read -p "Enter any Internet domain name : " domainname host "${domainname}" | grep 'has address' . Write a shell script that allows a user to enter any existing file name. The program should then copy file to /tmp directory. #!/bin/bash
  • 20. # Version 1 (blind copy) read -p "Enter any file name : " filename cp $filename /tmp OR #!/bin/bash # Version 2 (first check for $filename and than copy it, else display an error message) read -p "Enter any file name : " filename # if file exists, than copy it if [ -f "${filename}" ] then cp -v "$filename" /tmp else echo "$0: $filename not found." fi 9. Write a shell script that allows a user to enter directory name. The program should then create directory name in /tmp directory. #!/bin/bash # Version 1 (blind "mkdir directory" command) read -p "Enter any directory name : " directory mkdir "/tmp/${directory}"
  • 21. OR #!/bin/bash # Version 2 (Make sure dir does not exist, else display an error message) read -p "Enter any directory name : " directory # Make sure dir does not exits if [ ! -d "/tmp/${directory}" ] then mkdir -v "/tmp/${directory}" else echo "$0: /tmp/${directory} already exits." fi OR #!/bin/bash # Version 3 # Make sure dir does not exist, else display an error message # Use variables BASE="/tmp" read -p "Enter any directory name : " directory
  • 22. # create a path mydir="${BASE}/${directory}" # Make sure dir does not exits if [ ! -d "${mydir}" ] then mkdir -v "${mydir}" else echo "$0: ${mydir} already exists." fi 10. Write a shell script that allows a user to enter three file names. The program should then copy all files to USB pen. #!/bin/bash # Version 1 PEN="/media/usb" read -p "Enter three file names : " f1 f2 f3 cp -v "$f1" "$f2" "$f3" $PEN OR #!/bin/bash # Version 2
  • 23. # Make sure file exits and usb pen is mounted at $PEN # Set path PEN="/media/usb" read -p "Enter three file names : " f1 f2 f3 # Make sure pen drive exits else die [ ! -d "$PEN" ] && { echo "$0: USB pen drive not found at $PEN"; exit 1; } # Make sure pen drive is mounted else die if grep -wq "$PEN" /etc/mtab then # Make copy only if file exists, else display an error [ -f "$f1" ] &&cp -v "$f1" $PEN || echo "$0: $f1 not found." [ -f "$f2" ] &&cp -v "$f2" $PEN || echo "$0: $f2 not found." [ -f "$f3" ] &&cp -v "$f3" $PEN || echo "$0: $f3 not found." else echo "$0: USB pen is not mounted at $PEN." fi 11. Write a simple shell script where the user enters a pizza parlor bill total. Your script should then display a 10 percent tip. #!/bin/bash # Version 1
  • 24. clear echo "*************************" echo "*** Joes Pizza Parlor ***" echo "*************************" echo echo "Today is $(date)" echo read -p "Enter a pizza parlor bill : " bill tip=$(echo "scale=2; (${bill}*10) / 100" | bc -l) total=$(echo "scale=2; $tip + $bill" | bc -l) echo "Pizza bill : $bill" echo "Tip (10%) : ${tip}" echo "--------------------------" echo "Total : ${total}" echo "--------------------------" 12. Write a simple calculator program that allows user to enter two numeric values and operand as follows. The program should then print out the sum of two numbers. Make sure it works according to entered operand. #!/bin/bash read -p "Enter two values : " a b read -p "Enter operand ( +, -, /, *) : " op ans=$(( $a $op $b ))
  • 25. echo "$a $op $b = $ans" Exercise 2: Write a shell script that deletes all lines containing a specified word in one or more files supplied as arguments to it #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ # # 02dellines1.sh # # Author: Mohammed AhsanSiddiqui (ahsan.academic@gmail.com) # # Synopsis: This script deletes all the lines in a given set of files (passed # as arguments) whenever a line contains a given word (also passed as argument) # # Arguments: Expects atleast 2 arguments. First argument is the word that will # be searched in every line of each file. Starting with second argument and
  • 26. # afterwards all the remaining arguments will be treated as file names # # Syntax: ./02dellines1.sh <search_word><file_name> [<file_name> ...] # # Returns: All the text lines from each mentioned file not containing the # specified word # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ #!/bin/bash # Direct the script to use bash shell for its execution # Check to see if enough arguments are passed
  • 27. if [ $# -lt 2 ] then echo "Usage: ./02dellines1.sh <search_word><file_name> [<file_name> ...]" exit 1 fi search_word=$1 # Read the search word # Loop through all the supplied arguments for file_name in "$@" do # Skip the search word
  • 28. if [ "$file_name" = "$1" ] then continue fi echo $file_name echo "--------------------" # Check if the text file exists if [ ! -f $file_name ] then echo "File "$file_name" does not exist"
  • 29. exit 2 fi # Loop through the file line by line while read line do # if word is not found in current line then display it if ( ! ( echo $line | grep "$search_word" > /dev/null ) ) then echo $line # Display the line fi done < $file_name done
  • 30. Lab Exercise-4 1) Write a shell script to ask your name, program name and enrollment number and print it on the screen. Echo “Enter your name:” Read Name Echo “Enter your program name:” Read Prog Echo “Enter your enrollment number:” Read Enroll Clear Echo “Details you entered” Echo Name: $Name Echo Program Name: $Prog Echo Enrolment Number: $Enroll 2) Write a shell script to find the sum, the average and the product of the four integers entered Echo “Enter four integers with space between” Read a b c d Sum =`expr $a + $b + $c + $d` Avg =`expr $sum / 4` Dec =`expr $sum % 4`
  • 31. Dec =`expr ($dec * 1000 ) / 4` Product =`expr $a * $b * $c * $d` Echo Sum = $sum Echo Average = $avg. $dec Echo Product = $product 3) Write a shell program to exchange the values of two variables Echo “Enter value for a:” Read a Echo “Enter value for b:” Read b Clear Echo “Values of variables before swapping” Echo A = $a Echo B = $b Echo Values of variables after swapping a = `expr $a + $b` b = `expr $a – $b` a = `expr $a – $b` Echo A = $a Echo B = $b 4) Find the lines containing a number in a file
  • 32. Echo “Enter filename” Read filename Grep [0-9] $filename 5) Write a shell script to display the digits which are in odd position in a given 5 digit number Echo “Enter a 5 digit number” Read num n = 1 while [ $n -le 5 ] do a = `Echo $num | cut -c $n` Echo $a n = `expr $n + 2` done 6) Write a shell program to reverse the digits of five digit integer Echo “Enter a 5 digit number” Read num n = $num rev=0 while [ $num -ne 0 ] do
  • 33. r = `expr $num % 10` rev = `expr $rev * 10 + $r` num = `expr $num / 10` done Echo “Reverse of $n is $rev” 7) Write a shell script to find the largest among the 3 given numbers Echo “Enter 3 numbers with spaces in between” Read a b c 1 = $a if [ $b -gt $l ] then l = $b fi if [ $c -gt $l ] then l = $c fi Echo “Largest of $a $b $c is $l” 8) Write a shell program to search for a given number from the list of numbers provided using binary search method Echo “Enter array limit”
  • 34. Read limit Echo “Enter elements” n = 1 while [ $n -le $limit ] do Read num evalarr$n = $num n = `expr $n + 1` done Echo “Enter key element” Read key low = 1 high = $n found = 0 while [ $found -eq 0 -a $high -gt $low ] do mid = `expr ( $low + $high ) / 2` eval t = $arr$mid if [ $key -eq $t ] then found = 1 elif [ $key -lt $t ] then high = `expr $mid – 1` else
  • 35. low = `expr $mid + 1` fi done if [ $found -eq 0 ] then Echo “Unsuccessful search” else Echo “Successful search” fi 9) Write a shell program to concatenate two strings and find the length of the resultant string Echo “Enter first string:” Read s1 Echo “Enter second string:” Read s2 s3 = $s1$s2 len = `Echo $s3 | wc -c` len = `expr $len – 1` Echo “Concatenated string is $s3 of length $len ” 10) Write a shell program to find the position of substring in given string Echo “Enter main string:”
  • 36. Read main l1 = `Echo $main | wc -c` l1 = `expr $l1 – 1` Echo “Enter sub string:” Read sub l2 = `Echo $sub | wc -c` l2 = `expr $l2 – 1` n = 1 m = 1 pos = 0 while [ $n -le $l1 ] do a = `Echo $main | cut -c $n` b = `Echo $sub | cut -c $m` if [ $a = $b ] then n = `expr $n + 1` m = `expr $m + 1` pos = `expr $n – $l2` r = `expr $m – 1` if [ $r -eq $l2 ] then break fi else
  • 37. pos = 0 m = 1 n = `expr $n + 1` fi done Echo “Position of sub string in main string is $pos” 11) Write a shell program to display the alternate digits in a given 7 digit number starting from the first digit Echo “Enter a 7 digit number” Read num n = 1 while [ $n -le 7 ] do a = `Echo $num | cut -c $n` Echo $a n = `expr $n + 2` done 12) Write a shell program to find the gcd for the 2 given numbers Echo “Enter two numbers with space in between” Read a b m = $a
  • 38. if [ $b -lt $m ] then m = $b fi while [ $m -ne 0 ] do x = `expr $a % $m` y = `expr $b % $m` if [ $x -eq 0 -a $y -eq 0 ] then Echo “gcd of $a and $b is $m” break fi m = `expr $m – 1` done 13) Write a shell program to check whether a given string is palindrome or not. Echo “Enter a string to be entered:” Read str Echo len = `Echo $str | wc -c` len = `expr $len – 1` i = 1 j = `expr $len / 2`
  • 39. while test $i -le $j do k = `Echo $str | cut -c $i` l = `Echo $str | cut -c $len` if test $k != $l then Echo “String is not palindrome” exit fi i = `expr $i + 1` len = `expr $len – 1` done Echo “String is palindrome” 14) Write a shell program to find the sum of the series sum=1+1/2+…+1/n Echo “Enter a number” Read n i = 1 sum = 0 while [ $i -le $n ] do sum = `expr $sum + ( 10000 / $i )` i = `expr $i + 1`
  • 40. done Echo “Sum n series is” i = 1 while [ $i -le 5 ] do a = `Echo $sum | cut -c $i` Echo -e “$ac” if [ $i -eq 1 ] then Echo -e “.c” fi i = `expr $i + 1` done 15) Write a shell script to find the smallest of three numbers Echo “Enter 3 numbers with spaces in between” Read a b c s = $a if [ $b -lt $s ] then s = $b fi if [ $c -lt $s ] then
  • 41. s = $c fi Echo “Smallest of $a $b $c is $s” 16) Write a shell program to add, subtract and multiply the 2 given numbers passed as command line arguments add = `expr $1 + $2` sub = `expr $1 – $2` mul = `expr $1 * $2` Echo “Addition of $1 and $2 is $add” Echo “Subtraction of $2 from $1 is $sub” Echo “Multiplication of $1 and $2 is $mul” 17) Write a shell program to convert all the contents into the uppercase in a particular file Echo “Enter the filename” Read filename Echo “Contents of $filename before converting to uppercase” Echo —————————————————- cat $filename Echo —————————————————- Echo “Contents of $filename after converting to uppercase” Echo —————————————————
  • 42. tr ‘*a-z+‘ ‘*A-Z+‘ < $filename Echo ————————————————— 18) Write a shell program to count the characters, count the lines and the words in a particular file Echo “Enter the filename” Read file w = `cat $file | wc -w` c = `cat $file | wc -c` l = `grep -c “.” $file` Echo “Number of characters in $file is $c” Echo “Number of words in $file is $w” Echo “Number of lines in $file is $l” 19) Write a shell program to concatenate the contents of 2 files Echo “Enter first filename” Read first Echo “Enter second filename” Read second cat $first > third cat $second >> third Echo “After concatenation of contents of entered two files” Echo —————————————————- cat third | more Echo —————————————————- 20) Write a shell program to count number of words, characters, white spaces and special symbols in a given text Echo “Enter a text” Read text w = `Echo $text | wc -w` w = `expr $w` c = `Echo $text | wc -c` c = `expr $c – 1` s = 0 alpha = 0 j = ` ` n = 1 while [ $n -le $c ] do
  • 43. ch = `Echo $text | cut -c $n` if test $ch = $j then s = `expr $s + 1` fi case $ch in a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) alpha=`expr $alpha + 1`;; esac n = `expr $n + 1` done special = `expr $c – $s – $alpha` Echo “Words = $w” Echo “Characters = $c” Echo “Spaces = $s” Echo “Special symbols = $special” 24) Write a shell program to find factorial of given number Echo “Enter a number” Read n fact = 1 i = 1 while [ $i -le $n ] do fact = `expr $fact * $i`
  • 44. i = `expr $i + 1` done Echo “Factorial of $n is $fact” 25) Write a shell script to find the average of the numbers entered in command line n = $# sum = 0 for i in $* do sum = `expr $sum + $i` done avg = `expr $sum / $n` Echo “Average=$avg” 26) Write a shell script to sort the given numbers in descending order using Bubble sort Echo i = 1 k = 1 Echo “Enter no. of integers to be sorted” Read n Echo “Enter the numbers”
  • 45. while [ $i -le $n ] do Read num x[$k] = `expr $num` i = `expr $i + 1` k = `expr $k + 1` done x[$k] = 0 k = 1 Echo “The number you have entered are” while [ ${x[$k]} -ne 0 ] do Echo “$,x*$k+-” k = `expr $k + 1` done k = 1 while [ $k -le $n ] do j = 1 while [ $j -lt $n ] do y = `expr $j + 1` if [ ${x[$j]} -gt ${x[$y]} ] then temp = `expr ${x[$j]}`
  • 46. x[$j] = `expr ${x[$y]}` x[$y] = `expr $temp` fi j = `expr $j + 1` done k = `expr $k + 1` done k = 1 Echo “Number in sorted order…” while [ ${x[$k]} -ne 0 ] do Echo “$,x*$k+-” k = `expr $k + 1` done 27) Write a shell program to find the sum of all the digits in a given 5 digit number Echo “Enter a 5 digit number” Read num sum = 0 while [ $num -ne 0 ] do r = `expr $num % 10` sum = `expr $sum + $r`
  • 47. num = `expr $num / 10` done Echo “sum = $sum” 28) Write a shell script to generate fibonacci series Echo “how many fibonacci numbers do u want “ Read limit a = 0 b = 1 d = 1 Echo “————————————————————-” Echo -n $a Echo -n ” “ while test $d -le $limit do c = `expr ${a} + ${b}` Echo -n $c Echo -n ” “ b = $a a = $c d = `expr $d + 1` done 29) Shell Script to check whether given year is leap year or not
  • 48. Echo -n “Enter the year(yyyy) to find leap year :- “ Read year d = `expr $year % 4` b = `expr $year % 100` c = `expr $year % 400` if [ $d -eq 0 -a $b -ne 0 -o $c -eq 0 ] then Echo “year is leap year” else Echo “not leap year” fi 30) Shell Script to print alternate digit when a 7 digit number is passed Echo -n “Enter a 7 digit number:- “ Read number len = `echo $number | wc -c` flag = 1 while test $flag -le $len do Echo $number | cut -c$flag flag = `expr $flag + 2` done
  • 49. 31) Shell script to find average of number at given command line total = 0 count = $# for i #or u can append ( in $*) to get same result. do total = `expr $total + $i` done avg1 = `expr $total / $count` avg2 = `expr $total % $count` avg2 = `expr $avg2 * 100 / $count` Echo “The Average is :- $avg1.$avg2″ 32) Shell Script to reverse a inputted string and show it Echo -n “enter the string u want to reverse:-” Read string len = `Echo -n $string |wc -c` Echo “no of character is:- $len” while test $len -gt 0 do rev = $rev`Echo $string |cut -c $len` len = `expr $len – 1` done Echo “the reverse string is:-$rev “
  • 50. 33) Shell script to find occurrence of particular digit in inputted number Echo -n “enter any number:-” Read number Echo -n “which digit number do u want to count:-” Read digit len = `echo -n $number |wc -c` Echo “the length of number is:-$len” count = 0 while test $len -gt 0 do flag = `Echo -n $number |cut -c $len` if test $flag -eq $digit then count = `expr $count + 1` fi len = `expr $len – 1` done Echo “|$digit| occurred |$count| times in number ($number)” 34) Shell Script to find whether number given is even or odd Echo -n “enter any integer number to find even and odd :-” Read number rem = `expr $number % 2`
  • 51. if test $rem -eq 0 then Echo “number is even” else Echo “number is odd” fi 35) write shell script to generate fibonacci series #!/bin/bash #shell script to generate fibonacci series echo “how many fibonacci numbers do u want “ read limit a=0 b=1 d=1 echo “————————————————————-” echo -n $a echo -n ” “ while test $d -le $limit do c=`expr ${a} + ${b}` echo -n $c echo -n ” “ b=$a a=$c
  • 52. d=`expr $d + 1` done 36) write shell script to find wheather a particular year is a leap year or not #!/bin/bash #shell script to find wheather a particular year is a leap year or not echo -n “Enter the year(yyyy) to find leap year :- “ read year d=`expr $year % 4` b=`expr $year % 100` c=`expr $year % 400` if [ $d -eq 0 -a $b -ne 0 -o $c -eq 0 ] then echo “year is leap year” else echo “not leap year” fi 37) write shell script to print alternate digits when a 7 digit number is passed as input #!/bin/bash #shell script to print alternate digits when a 7 digit number is passed as input echo -n “Enter a 7 digit number:- “
  • 53. read number len=`echo $number | wc -c` flag=1 while test $flag -le $len do echo $number | cut -c$flag flag=`expr $flag + 2` done 38) write shell script to find average of numbers given at command line #Tue May 28 11:12:41 MUT 2002 total=0 count=$# for i #or u can append ( in $*) to get same result. do total=`expr $total + $i` done avg1=`expr $total / $count` avg2=`expr $total % $count` avg2=`expr $avg2 * 100 / $count` echo “The Average is :- $avg1.$avg2″ 39) write shell script to find wheather a given word is palindrome or not
  • 54. #Sun Jun 9 12:06:14 MUT 2002 –By Mukesh clear echo -n “enter the name :-” read name len=`echo -n $name | wc -c` echo “Length of the name is :-”$len while [ $len -gt 0 ] do rev=$rev`echo $name | cut -c$len` len=`expr $len – 1` done echo “Reverse of the name is :-”$rev if [ $name = $rev ] then echo “It is a palindrome” else echo “It is not a palindrome” fi 40) write shell script to reverse a inputed string and show it. #!/bin/bash #shell script to reverse a inputed string and show it. echo -n “enter the string u want to reverse:-” read string
  • 55. len=`echo -n $string |wc -c` echo “no of character is:- $len” while test $len -gt 0 do rev=$rev`echo $string |cut -c $len` len=`expr $len – 1` done echo “the reverse string is:-$rev “ 41) write shell script to count occurence of a perticular digit in inputted number. #!/bin/bash #shell script to count occurence of a perticular digit in inputted number. echo -n “enter any number:-” read number echo -n “which digit number do u want to count:-” read digit len=`echo -n $number |wc -c` echo “the length of number is:-$len” count=0 while test $len -gt 0 do flag=`echo -n $number |cut -c $len` if test $flag -eq $digit
  • 56. then count=`expr $count + 1` fi len=`expr $len – 1` done echo “|$digit| occured |$count| times in number ($number)” 42) write shell script to find even or odd. #!/bin/bash #shell script to find even or odd. echo -n “enter any integer number to find even and odd :-” read number rem=`expr $number % 2` if test $rem -eq 0 then echo “number is even” else echo “number is odd” fi Exercise 6: Write a shell script to list all of the directory files in a directory. Synopsis: This script lists all the sub-directories in a given directory
  • 57. # # Arguments: Expects 0 or 1 argument. Argument should be the name of a # directory. If argument is omitted then the script will work on current # directory. # # Syntax: ./06listdirs1.sh [<dir_name>] # # Returns: The list of all directories in a given directory/current directory # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash # Direct the script to use bash shell for its execution
  • 58. # Check to see if correct number of arguments are passed if [ $# -gt 1 ] then echo "Usage: ./06listdirs1.sh [<dir_name>]" exit 1 elif [ $# -eq 1 ] # A directory is passed as an argument then if ! [ -d $1 ] # Check if the directory exists then echo "$1 is not a directory" exit 2 fi
  • 59. dir_to_search=$1 # Read the argument as the name of directory to search else dir_to_search="." # Directory to be searched is the current directory fi # Go to the search directory cd $dir_to_search # Loop through all the contents of the directory for file_name in `ls` do # Check if the current file is a directory and if so display it
  • 60. [ -d $file_name ] && echo $file_name "is a directory" done Exercise 5: Write a shell script that receives any number of file names as its arguments, counts and reports the occurrence of each word that is present in the first argument file on other argument files. Synopsis: This script counts the frequency of each word (supplied in a text # file) occuring in a group of files (also supplied as arguments) # # Arguments: Expects atleast 2 arguments. First argument is the name of the # file which contains a list of words which are to be searched. Remaining # arguments are the names of files in which the words are to be searched # # Syntax: ./05countwords.sh <search_file><file_name> [<file_name> ...] # # Returns: The frequency of each word in every file mentioned
  • 61. # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash # Direct the script to use bash shell for its execution # Check to see if enough arguments are passed if [ $# -lt 2 ] then echo "Usage: ./05countwords.sh <search_file><file_name> [<file_name> ...]" exit 1 fi
  • 62. search_file=$1 # Read the search file name # Loop through each file supplied as argument to the command for file_name in "$@" do # First file contains search words, so skip it if [ "$file_name" = "$1" ] then continue fi # Display the file name echo "--------------------"
  • 63. echo $file_name echo "--------------------" # Check if the text file exists if [ ! -f $file_name ] then echo "File "$file_name" does not exist" exit 2 fi # Loop through the search file reading one word per line while read search_word
  • 64. do # Count the frequency of current search word in current file. # To do that, first replace all tabs (011) and spaces (040) with # newlines (012). Then remove all the characters except a-z, A-Z # 0-9, - and newlines. Finally frequency of current search word word_freq=`tr "[011040]" "[012012]" < $file_name | tr -cd "[a-zA-Z0-9-012]" | grep -c "$search_word"` # Display the word and its frequency echo $search_word $word_freq done < $search_file done Exercise 4: Write a shell script that receives any number of file names as its arguments, checks if every argument supplied is a file or a directory and reports
  • 65. accordingly. Whenever the argument is a file, the number of lines on it is also reported. Synopsis: This script accepts any number of arguments as the names of files # and directories, checks each argument if it is a file or a directory and # reports accordingly, and also reports the number of lines if it is a file # # Arguments: Expects atleast 1 argument. Arguments should be the names of files # and/or directories # # Syntax: ./04fileordir1.sh <file_name|dir_name> [<file_name|dir_name> ...] # # Returns: The supplied arguments as file names along with the type of file and # number of lines if it is a file # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 66. #!/bin/bash # Direct the script to use bash shell for its execution # Check to see if enough arguments are passed if [ $# -lt 1 ] then echo "Usage: ./04fileordir1.sh <file_name|dir_name> [<file_name|dir_name> ...]" exit 1 fi # Loop through all the supplied arguments for file_name in "$@" do # Check if the current file is regular if [ -f $file_name ] then echo $file_name "is a file, and it contains " `cat $file_name | wc -l` "lines"
  • 67. fi # Check if the current file is a directory if [ -d $file_name ] then echo $file_name "is a directory" fi done Exercise 7: Write a shell script to find factorial of a given number Synopsis: This script calculates the factorial a number passed as an argument # to it #
  • 68. # Arguments: Expects 1 arguments which must be numeric # # Syntax: ./07fact.sh <number> # # Returns: Factorial of the number supplied as argument # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/bin/bash # Direct the script to use bash shell for its execution # Check to see if 1 argument is passed and it is a number if ( [ $# -ne 1 ] || echo $1 | grep -E "[^0-9]+" > /dev/null ) then
  • 69. echo "Usage: ./07fact.sh <number>" exit 1 fi i=$1 # A counter f=1 # Initiate factorial # Decrease the counter and multiply with current factorial # till counter becomes 1 while [ $i -gt 0 ] do f=`expr $f * $i` # Update the factorial i=`expr $i - 1` # Decrease the counter by 1 done
  • 70. echo $f # Display the factorial 1-. Write a Shell Script that takes a search string and file name from the terminal & displays the results. read a read b word= ‘grep $a $b’ if test ‘echo $word |wc –c’-eq1 then echo “patern not found” else grep $a $b fi output- sh ss1 enter the string to be searched ashs enter the file name ss2 patern not found
  • 71. 2- Write a Shell Script that takes pattern and file name as command line arguments and displays the results appropriately i.e. pattern found/pattern not found. if test $# -ne 2 then echo “Invalid no. of arguments” else word=’grep $1 $2 if test ‘word | wc –c’ –eq1 then echo ”pattern not found ” else grep $1 $2 echo “pattern found” fi fi output sh ss2 contents ss12 echo “ n” content are same second file is being deleted echo “ n” content are different pattern found
  • 72. 3- Write a Shell Script that accepts only three arguments from the command line. The first argument is the pattern string, the second argument is the file name in which the pattern is to be searches and the third argument is the file name in which the result is to be stored. if test $# -ne3 then echo “Invalid no. of arguments” else grep $1 $2 | cat>$3 if test –s $3 then echo “pattern found” cat $3 else echo “pattern not found” fi output: sh ss3 echo ss12 output pattern found echo “n ” content are same second file is being deleted echo “ n” content are different echo “ n” file does not exist cat output echo “ n” content are different
  • 73. echo “ n” file does not exist. 4- Write a Shell Script that accepts a file name as a command line argument and finds out if its a regular file or a directory. If its a regular file, then performs various tests to see if it is readable, writable, executable etc. if [-d $1] then echo It’s a directory elif [-f $1] then echo file exist if [-r $1] then echo file has read permission echo the content are ---- cat $1 else file don’t have read permission fi if [-w $1] then echo “ ”file have write permission cat >>$1 else echo you do not have write permission
  • 74. fi if [-x $1] then echo “ ” file have execute permission else you don’t have execute permission fi else echo Nothing exist by this name fi Output: $ sh ss4 free file exist file has read permission the content are _ _ _ _ _ Ashish is a mca student __ _ _ _ _ _ _ _ You have execute permission 5- Write a Shell Script that computes the factorial of a given number echo “Enter the no. to compute its factorial”
  • 75. read num i=1 fact=1 while test $i –le $num do fact = “factorial of : $num is: $fact” Output: sh ss6 Enter the no. to compute its factorial 6 Factorial of :6 is: 720 6- Write a Shell Script that works like a calendar reminding the user of certain things depending on the day of the week. a= `date + % A` echo “n” welcome Ashish echo “n ” Today is $a echo your task for today is as follows case $a in Monday) echo complete ur Monday task ;; Tuesday) echo complete ur Tuesday task
  • 76. ;; Wednesday) echo complete ur Wednesday task ;; Thursday) echo complete ur Thursday task ;; Friday) echo complete ur Friday task ;; Saturday) echo complete ur Saturday task ;; Sunday) echo complete ur Sunday task ;; Esac Output: Sh ss7 Welcome ashish Today is Sunday Complete ur Sunday taske 7- Write a Shell Script that changes the extension of a group of files from txt to doc echo Before ls *.txt for i in `ls *.txt`
  • 77. domv $i `echo $i|cut -f1 -d"."`.doc done echo After ls *.doc Output : $sh ss8 Before d.txt f.txt r.txt After d.doc e?q?w.doc f.doc q?w.doc r.doc w.doc 8- Write a Shell Script that accepts both file name and a set of patterns as positional parameters to a script. fn=$1 shift for i in $* do grep $i $fn done Output:
  • 78. ashish@ASHISH-PC:~/File$ sh SS9 ss8 txt doc ls *.txt for i in `ls *.txt` mv $i `echo $i|cut -f1 -d"."`.doc ls *.doc ashish@ASHISH-PC:~/File$ 9- Write a Shell Script which will redirect the output of the date command without the time into a file. echo Enter the file name read file a=`date|cut -b 1-11,25-28` echo $a|tee -a $file clear echo "n"$filesucessfully created echo "n""Content of file is :"`cat $file` Output : sh ss10 Enter the file name ss2 Thu Nov 20 2008 ss2 sucessfully created
  • 79. Content of file is :if test $# -ne 2 then echo "Invalid no. of arguments" else word=`grep $1 $2` if test `echo $word|wc -c` -eq 1 then echo "Pattern not found" else grep $1 $2 fi fi Thu Nov 202008 10- Write a Shell Script (using while loop) to execute endlessly (until terminated by user) a loop which displays contents of current directory, disk space status, sleep for 30 seconds and display the users currently logged in on the screen. char=y while [ $char ="y" ] do ls df -t sleep 30 who echo"Want to continue(y/n)?" read char done Output : sh ss11 cold gold sold ss11 ss14 SS17 ss2 ss22 SS25 SS28 SS30 ss6 SS9 e.txt output ss1 ss12 ss15 ss18 SS20 ss23 SS26 SS29 ss4 ss7 tr.c f1 q.txt ss10 ss13 ss16 SS19 ss21 SS24 SS27 ss3 SS5 ss8 w.txt Filesystem 1K-blocks Used Available Use% Mounted on
  • 80. /dev/sda6 4845056 2476544 2124328 54% / varrun 452316 96 452220 1% /var/run varlock 452316 0 452316 0% /var/lock udev 452316 56 452260 1% /dev devshm 452316 12 452304 1% /dev/shm lrm 452316 39760 412556 9% /lib/modules/2.6.24-19-generic/volatile gvfs-fuse-daemon 4845056 2476544 2124328 54% /home/ashish/.gvfs ashish tty7 2008-11-20 11:20 (:0) ashishpts/0 2008-11-20 11:25 (:0.0) Want to continue(y/n)? 11- Write a Shell Script that receives two file names as arguments. It should check whether content of the two files is same or not. If they are same, second file should be deleted. if [ -f $1 -a -f $2 ] then if diff $1 $2 then cat $1 echo "n" cat $2 echo "n" Contents are same Second file is being deleted rm $2 else echo"n" Contents are different
  • 81. fi else echo "n" File does not exist fi Output: $ sh ss12 dfrt Ashish Ashish Contents are same Second file is being deleted $ 12 - If a number is input through the keyboard, WASS to calculate sum of its digits. echo Enter a no. read num sum=0 while true do if test `expr $num % 10` -gt 0 then temp=`expr $num % 10` sum=`expr $sum + $temp` num=`expr $num / 10`
  • 82. else echo $sum exit fi Output: sh ss13 Enter a no. 2345 14 13- Write a Shell Script that performs a count-down either from 10 (default) or from the value that is entered by the user. echo "Enter the Countdown time." read n clear while [ $n -ge 0 ] do echo $n sleep 1 n=`expr $n – 1` done echo Count down timer stopped
  • 83. Output: sh ss14 Enter the Countdown time. 3 3 2 1 0 Count down timer stopped 14- Write a Shell Script which takes a command line argument of Kms and by default converts that number into meters. Also provide options to convert km to dm and km to cm. Km=$1 mt=`expr $km * 1000` echo "1.) km to dm" echo "2 ) km to cm" echo Enter your choice read num case $num in 1)dm=`expr $km * 10000` echo $km in meters is :$mt and in decimeters is : $dm ;; 2)cm=`expr $km * 100000`
  • 84. echo $km in meters is :$mt and in centimeters is : $cm ;; esac Output: sh ss15 5 5 kms in meters is 5000 km to dm km to cm Enter your choice 1 5 in meters is- 5000 and in decimeters is 50000 15- Write a Shell Script using for loop, which displays the message "Welcome to the UNIX System". for var in $* do echo "Welcome to Unix System" shift 1 done Output: sh ss16
  • 85. Welcome to Unix System 16- Write a Shell Script to change the file name of all files in a directory from lower-case to upper-case. for i in * do mv $i `echo $i|tr "[:lower:]" "[:upper:]"` done Output: sh SS17 mv: `COLD' and `COLD' are the same file mv: `E.TXT' and `E.TXT' are the same file mv: `F1' and `F1' are the same file mv: `GOLD' and `GOLD' are the same file mv: `Q.TXT' and `Q.TXT' are the same file mv: `SOLD' and `SOLD' are the same file mv: `SS1' and `SS1' are the same file COLD GOLD SOLD SS11 SS14 SS17 SS2 SS22 SS25 SS28 SS30 SS6 SS9 E.TXT OUTPUT SS1 SS12 SS15 SS18 SS20 SS23 SS26 SS29 SS4 SS7 TR.C F1 Q.TXT SS10 SS13 SS16 SS19 SS21 SS24 SS27 SS3 SS5 SS8 W.TXT
  • 86. 17- Write a Shell Script that examines each file in the current directory. Files whose namesend in old are moved to a directory named old files and files whose names end in .c aremoved to directory named cprograms. echo Before "n" ls -l mkdiroldfilescprograms for var in `ls` do if test $var = *old then echo "n" File $var is moved to old files directory mv $var old files fi if test $var = *.c then echo"n" File $var is moved to cprograms directory mv $varcprograms fi done cd oldfiles echo "n" Files in oldfiles ls -l cd .. echo "n" After"n" ls -l
  • 87. Output: sh SS18 Before total 144-rwxrwxrwx 1 ashishashish 66 2008-11-20 10:07 COLD -rwxrwxrwx 1 ashishashish 0 2008-11-20 10:07 E.TXT -rwxrwxrwx 1 ashishashish 7 2008-11-20 10:07 F1 -rwxrwxrwx 1 ashishashish 54 2008-11-20 10:07 GOLD Files in oldfiles total 0 After total 152 -rwxrwxrwx 1 ashishashish 66 2008-11-20 10:07 COLD drwxr-xr-x 2 ashishashish 4096 2008-11-20 12:04 cprograms -rwxrwxrwx 1 ashishashish 0 2008-11-20 10:07 E.TXT -rwxrwxrwx 1 ashishashish 7 2008-11-20 10:07 F1 -rwxrwxrwx 1 ashishashish 54 2008-11-20 10:07 GOLD 18- Write a Shell Script which searches all files in the given directory (to be taken as command line argument) for the file having the title (to be taken as command line argument), as the first line in the file. a) Display the contents of the searched file. b) In the end, printthe the file is ###, where
  • 88. ### is small-sized if total no. of lines is <50 data-blogger-escaped-span="span"> ### is medium-sized if total no. of lines between 50&100 ### is large-sized. for i in `ls $dirnm` do f=`echo $1/$i` if [ -f $f ] then if [ `cat $f|head -1` = $2 ] then cat $f if [ `cat $f|wc -l` -lt 50 ] then echo $i is small sized fi if [ `cat $f|wc -l` -ge 50 -a `cat $f|wc -l` -lt 100 ] then echo $i is a medium sized fi if [ `cat $f|wc -l` -gt 100 ] then echo $i is large sized fi fi fi
  • 89. done Output: sh ss19 newdir AMITY AMITY Amity University file1 is small sized 19- Write a shell script which reports names and sizes of all files in a directory (directory would be supplied as an argument to the shell script) whose size is exceeding 1000 bytes.The file names should be printed in descending order of their sizes. The total number of such files should also be reported. Cd $1 mkdir tmp$1 for i in * do if [ -f $i ] then tmp=`ls -l $i|cut -f5 -d" "` if [ $tmp -gt 1000 ] then ln $i tmp$1/$i fi
  • 90. fi done ls -lS tmp$1 echo Total number of such files is : `ls tmp$1|wc -w` rm -r tmp$1 output: sh SS20 total 4-rw-r--r-- 2 ashishashish 1392 2008-11-20 11:02 unix output Total number of such files is : 1 20- WASS for renaming each file in the directory such that it will have the current shell PID as an extension. The shell script should ensure that the directories do not get renamed. for var in `ls` do if test -f $var then a=`echo $$` mv $var $var.$a fi done echo "n" File name changed:"n" ls -l
  • 91. Output: sh SS21.7600.a File name changed: total 152 -rwxrwxrwxashishashish 66 2008-11-20 10:07 COLD.7600.a.a drwxr-xr-x 2 ashishashish 4096 2008-11-20 12:04 cprograms -rwxrwxrwx 1 ashishashish 0 2008-11-20 10:07 E.TXT.7600.a.a -rwxrwxrwx 1 ashishashish 7 2008-11-20 10:07 F1.7600.a.a -rwxrwxrwx 1 ashish ashish54 2008-11-20 10:07 GOLD.7600.a.a drwxr-xr-x 2 ashishashish 4096 2008-11-20 12:04 oldfiles 21- WAP to calculate and print the first m Fibonacci numbers. echo Enter the series length read num x=0 y=1 if test $num -eq 1 then echo $x else if test $num -eq 2 then echo "$xn$y" else
  • 92. echo "$xn$y" i=3 while test $i -le $num do temp=`expr $y + $x` x=$y y=$temp echo $y i=`expr $i + 1` done fi fi Output: sh SS22 Enter the series length 6 0 1 1 2 3 22- WASS that will receive any number of file names as arguments. The shell script should check whether such files already exist. If they do, then it should be
  • 93. reported. The files that do not exist should be created in a sub-directory called my dir. The shell script should first check whether the sub-directory my dir exists in the current directory. If it doesn’t exist,then it should be created. If my dir already exists, then it should be reported along with the number of files that are currently present in my dir. if [ -e mydir ] then echo "Directory : mydir exist" else echo Do not exist mkdirmydir fi for a in $* do echo $a then echo "File does not exist " else echo “file d touch $a mv $a mydir fi done Output:
  • 94. sh SS23 SS22 Directory : mydir exist SS22 File does not exists 23- A shell script receives even number of file names. Suppose four file names are supplied,then the first file should get copied into second file, the third file should get copied into fourth and so on. If odd number of file names is supplied then no copying should take place and an error message should be displayed. if [ `expr $# % 2` -ne 0 ] thenecho Enter even number of parameters else i=0 for k in $* do i=`expr $i + 1` if [ $i -eq 1 ] then temp1=$k fi if [ $i -eq 2 ] then temp2=$k i=0
  • 95. cp $temp1 $temp2 fi done fi cat Output: $ cat>txt File Ashish lives in Delhi$ cat>doc Ashish is a student of MCA$ cat>tree Ashish is a good student$ cat>wee His roll no- is A1004807024 $ sh SS24 txt doc tree wee His roll no- is A1004807024 Ashish is good student Ashish lives id Delhi Ashish is a student of BCA 24- WASS to identify all zero-byte files in the current directory and delete them. Before proceeding with deletion, the shell script should get a conformation from the user. for i in * do if [ -e $i -a -f $i ] then if [ -s $i ] then
  • 96. echo else rm -i $i fi fi done Output: sh SS25 rm: remove regular empty file `E.TXT'? y rm: remove regular empty file `Q.TXT'? n rm: remove regular empty file `W.TXT'? n 25- WASS to compute the GCD and LCM of two numbers. echo Enter First number read n1 echo Enter Second number read n2 if [ $n1 -lt $n2 ] then i=$n1 else i=$n2
  • 97. fi flag=0 while [ $flag -eq 0 ] do if [ `expr $n1 % $i` -eq 0 -a `expr $n2 % $i` -eq 0 ] then echo GCD of $n1 and $n2 is $i flag=1 fi i=`expr $i – 1` done Output: sh SS26 Enter First number 4 Enter Second number 8 GCD of 4 and 8 is 4 26- Two numbers are entered through the keyboard. WAP to find the value of one number raised to the power of another. read b echo Enter power
  • 98. read p powr=$p result=1 while [ $p -ge 1 ] do result=`expr $result * $b` p=`expr $p – 1` done echo $b raised to the power $powr is $result Output: sh SS27 Enter a number 4 Enter power 2 4 raised to the power 2 is 16 27- WASS that prompts the user for the password. The user has maximum of 3 attempts. If the user enters the correct password, the message “Correct Password” is displayed else the message “Wrong Password”. echo Set the password first read passw i=0
  • 99. while [ $i -lt 3 ] do echo Enter password read p if [ $p = $passw ] then echo Correct Password i=3 else echo Wrong password i=`expr $i + 1` fi done Output: sh SS28 Set the password first ashish Enter password ashish Correct Password 28- WASS that repeatedly asks the user repeatedly for the “Name of the Institution” until the user gives the correct answer.
  • 100. Flag=0 while [ $flag -eq 0 ] do echo Enter name of your institute in capital letters read inst if [ $inst = "AMITY" ] then echo Correct Answer flag=1 else echo Enter Again fi done output: sh SS29 Enter name of your institute in capital letters AMITY Correct Answer 29- WAP to generate all combinations of 1, 2 and 3 using for loop. for i in 1 2 3 do
  • 101. for j in 1 2 3 do for k in 1 2 3 do echo $i$j$k done done done Output: sh SS30 111 112 113 121 122 123 131 132 133 211 212 213 221