Using if elif fi in shell scripts
sh
is interpreting the &&
as a shell operator. Change it to -a
, that’s [
’s conjunction operator:
[ "$arg1" = "$arg2" -a "$arg1" != "$arg3" ]
Also, you should always quote the variables, because [
gets confused when you leave off arguments.
Josh Lee's answer works, but you can use the "&&" operator for better readability like this:
echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
then
echo "Two of the provided args are equal."
exit 3
elif [ $arg1 = $arg2 ] && [ $arg1 = $arg3 ]
then
echo "All of the specified args are equal"
exit 0
else
echo "All of the specified args are different"
exit 4
fi