Chapter 5 answers
Revision as of 13:31, 20 July 2011 by 117.205.11.253 (talk)
← Chapter 5 Challenges • Home • Chapter 6: Shell Redirection →
- Decide whether the following sentence is true or false:
- False
- False
- False
- False
- True
- True
- True
- Write a menu driven script using the select statement to print calories for food items such as pizza, burger, Salad, Pasta etc.
- Write a shell script that, given a file name as the argument will count vowels, blank spaces, characters, number of line and symbols.
#!/bin/bash
file=$1
v=0
if [ $# -ne 1 ]
then
echo "$0 fileName"
exit 1
fi
if [ ! -f $file ]
then
echo "$file not a file"
exit 2
fi
while read -n 1 c
do
l=$(echo $c | tr [:upper:] [:lower:])
[[ "$l" == "a" || "$l" == "e" || "$l" == "i" || "$l" == "o" || "$l" == "u" ]] && (( v++ ))
done < $file
echo "Vowels : $v"
echo "Characters : $(cat $file | wc -c)"
echo "Blank lines : $(grep -c '^$' $file)"
echo "Lines : $(cat $file|wc -l )"
- Write a shell script that, given a file name as the argument will count English language articles such As 'A', 'An' and 'The'.
#!/bin/bash
file=$1
a=0
if [ $# -ne 1 ]
then
echo "$0 fileName"
exit 1
fi
if [ ! -f $file ]
then
echo "$file not a file"
exit 2
fi
while read line
do
l=$(echo $line | tr [:upper:] [:lower:])
for word in $l
do
[[ $word == "a" || $word == "an" || $word == "the" ]] && ((a++))
done
done < $file
echo "articles : $a"
- Write a shell script that, given a file name as the argument will write the even numbered line to a file with name evenfile and odd numbered lines in a text file called oddfile.
#!/bin/bash
file=$1
counter=0
if [ $# -ne 1 ]
then
echo "$0 fileName"
exit 1
fi
if [ ! -f $file ]
then
echo "$file not a file"
exit 2
fi
while read line
do
((counter++))
EvenNo=$(( counter%2 ))
if [ $EvenNo -eq 0 ]
then
echo $line >> evenfile
else
echo $line >> oddfile
fi
done < $file
- Write a shell script to monitor Linux server disk space using a while loop. Send an email alert when percentage of used disk space is >= 90%.
#!/bin/bash
ADMIN="me@somewher.com"
# set alert level 90% is default
ALERT=90
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
#echo $output
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
mail -s "Alert: Almost out of disk space $usep" $ADMIN
fi
done
- Write a shell script to determine if an input number is a palindrome or not. A palindromic number is a number where the digits, with decimal representation usually assumed, are the same read backwards, for example, 58285.
#!/bin/bash
echo -n "Enter number : "
read n
# store single digit
sd=0
# store number in reverse order
rev=""
# store original number
on=$n
while [ $n -gt 0 ]
do
sd=$(( $n % 10 )) # get Remainder
n=$(( $n / 10 )) # get next digit
# store previous number and current digit in reverse
rev=$( echo ${rev}${sd} )
done
if [ $on -eq $rev ];
then
echo "Number is palindrome"
else
echo "Number is NOT palindrome"
fi
- Write a shell program to read a number *such as 123) and find the sum of digits (1+2+3=6).
#!/bin/bash
#store the no
num=$1
#store the value of sum
sum=0
if [ $# -ne 1 ]
then
echo "$0 number"
exit 1
fi
while [ $num -gt 0 ]
do
digit=$(( num%10 ))
num=$(( num/10 ))
sum=$(( digit+sum ))
done
echo "Sum of digits = $sum"
- Write a shell program to read a number and display reverse the number. For example, 123 should be printed as as 321.
#!/bin/bash
#store the no
num=$1
#store the reverse number
rev=0
if [ $# -ne 1 ]
then
echo "$0 number"
exit 1
fi
while [ $num -gt 0 ]
do
digit=$(( num%10 ))
num=$(( num/10 ))
rev=$(( digit + rev*10 ))
done
echo "Reverse of number = $rev"
- Write the shell program which produces a report from the output of ls -l in the following format using the for loop statement:
file1 file2 [DIR] test/ Total regular files : 7 Total directories : 4 Total symbolic links : 0 Total size of regular files : 2940
- Write a shell script that will count the number of files in each of your sub-directories using the for loop.
- Write a shell script that accepts two directory names as arguments and deletes those files in the first directory which are similarly named in the second directory.
- Write a shell script to search for no password entries in /etc/passwd and lock all accounts.
- Write a shell program to read two numbers and display all the odd numbers between those two numbers.
← Chapter 5 Challenges • Home • Chapter 6: Shell Redirection →