In this HackerRank More on Conditionals problem solution if statements in Bash are often used in four important ways:
- if…then…fi statements
- if…then…fi…else statements
- if..elif..else..fi
- if..then..else..if..then..fi..fi.. (Nested Conditionals)
Their structure is
if [[ condition ]]
then
do this
elif [[ condition ]]; then
do this
else
do this by default
fi
Note that there must be spaces between the brackets and their enclosing text. An or condition is || and an and condition is &&. Also note that then is required after if and elif but not after else. It must be separated from the conditional by either a newline or a ; which represents a newline to bash. The entire if clause is terminated with fi.
Given three integers (X, Y, and Z) representing the three sides of a triangle, identify whether the triangle is scalene, isosceles, or equilateral.
If all three sides are equal, output EQUILATERAL.
Otherwise, if any two sides are equal, output ISOSCELES.
Otherwise, output SCALENE.
Problem solution.
function readInt { read line echo $line } a=$(readInt) b=$(readInt) c=$(readInt) if [ $a = $b ] && [ $a = $c ]; then echo "EQUILATERAL"; elif [ $a = $b ] || [ $a = $c ] || [ $b = $c ]; then echo "ISOSCELES"; else echo "SCALENE"; fi
Second solution.
#! /bin/bash read a read b read c if [ $a = $b ] && [ $b = $c ] ; then echo "EQUILATERAL" elif [ $a = $b ] || [ $b = $c ] || [ $a = $c ] ; then echo "ISOSCELES" else echo "SCALENE" fi