write a shell script to find the largest number from 3 given
numbers.
Answers were Sorted based on User's Feedback
Answer / vipul dalwala
if [ $# -ne 3 ]
then
echo "$0: number1 number2 number3 are not given" >&2
exit 1
fi
if [ $1 -eq $2 ] && [ $1 -eq $3 ]
then
echo "All the three numbers are equal"
elif [ $1 -eq $2 ] && [ $1 -gt $3 ]
then
echo "$1 and $2 numbers are equal and are largest
numbers among $1 $2 and $3"
elif [ $1 -eq $3 ] && [ $1 -gt $2 ]
then
echo "$1 and $3 numbers are equal and are largest
numbers among $1 $2 and $3"
elif [ $2 -eq $3 ] && [ $2 -gt $1 ]
then
echo "$2 and $3 numbers are equal and are largest
numbers among $1 $2 and $3"
elif [ $1 -eq $2 ] && [ $1 -lt $3 ]
then
echo "$3 is largest number among $1 $2 and $3"
elif [ $1 -eq $3 ] && [ $1 -lt $2 ]
then
echo "$2 is largest number among $1 $2 and $3"
elif [ $2 -eq $3 ] && [ $2 -lt $1 ]
then
echo "$1 is largest number among $1 $2 and $3"
elif [ $1 -gt $2 ] && [ $1 -gt $3 ]
then
echo "$1 is largest number among $1 $2 and $3"
elif [ $2 -gt $1 ] && [ $2 -gt $3 ]
then
echo "$2 is largest number among $1 $2 and $3"
elif [ $3 -gt $1 ] && [ $3 -gt $2 ]
then
echo "$3 is largest number among $1 $2 and $3"
else
echo "I can not figure out which number is
largest"
fi
Is This Answer Correct ? | 22 Yes | 19 No |
Answer / a
mr imran/vipul
when i run this script it always say number not given
what is the reason and how would this ask for the those 3 numbers to be sorted ??
Is This Answer Correct ? | 3 Yes | 0 No |
Answer / aseem
Hi Imran,
Could you please run your script with below parameter
4 45 1. It will give the output as "1 is the largest number"
reason is you have used only sort command not sort -nr so it will not sort in reverse order, so in your case head -1 will rather than tail -1.
Hi A,
Regarding your answer you have to run by below way.
say you are keeping your script in file test.sh
then
sh test.sh 43 1 34
Actually it takes the positional parameter so after script whatever input you provide it takes as parameter.
Feel free to send me email aseem02@gmail.com if you have any doubt regarding shell scripting, will glad to help you guys.
Is This Answer Correct ? | 3 Yes | 0 No |
Answer / aseem
Hi
"In continuation to above answer.
If you want to write a script in more generic way.
if [ $# -eq 0 ]
then
echo "$0: numbers are not given" >&2
exit 1
fi
LARGEST=$(echo $* | xargs -n1 | sort -nr | tail -1)
echo "$LARGEST is largest number""
The above script is good but there is a small msitake. As
numeric sort is used in reverse order so the biggest number
will come first, so we should use head -1 rather than tail -
1
Is This Answer Correct ? | 9 Yes | 8 No |
Answer / md. imran
if [ $# -eq 0 ]
then
echo "$: numbers are not given" >&2
exit 1
fi
LARGEST=$(echo $* |xargs -n1 |sort |head -1)
echo $LARGEST is largest number"
or if you want to take input from a file so type following
cat <filename>|xargs -n1|sort|head -1
Note : In first scipt mistake was in tail -1
right answer is head -1 which i have mentioned there.
thanks
Is This Answer Correct ? | 5 Yes | 5 No |
Answer / vipul dalwala
In continuation to above answer.
If you want to write a script in more generic way.
if [ $# -eq 0 ]
then
echo "$0: numbers are not given" >&2
exit 1
fi
LARGEST=$(echo $* | xargs -n1 | sort -nr | tail -1)
echo "$LARGEST is largest number"
Is This Answer Correct ? | 13 Yes | 15 No |
What is sh in shell script?
How to open a read-only file in the shell?
What is a program shell?
What is the need of including script interpreter in your shell script?
What is ms powershell?
How important is shell scripting?
Why do we use shell scripting?
What is echo $shell?
What are the various stages of a linux process it passes through?
Create a bash shell script that removes all files whose names end with a "~" from your home directory and subdirectories. Name this script "cleanup.sh"
How to group the commands in shell scripting?
How can we find the process name from its process id?