Hey guys ..

I am pretty new to Shell Scripting. I was hoping if some one could help me out with my problem.

I am going with a tutorial for shell scripting. While executing some of the programs and commands I am getting errors. I have also checked other sites and tutorials for the same, but everything seems intact.
Following is the code. When I execute this (after changing the permission - 755), I get an error saying "unexpected end of file", Now I am not sure why this is happening ... please help me out.

Thanks in advance

Regards,
A Kris

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

help_uni()
{
echo "Usage: $0 -n -a -s -w -d"
echo "Option: These are optional argument"
echo " -n name of animal"
echo " -a age of animal"
echo " -s sex of animal"
echo " -w weight of animal"
echo " -d demo values (if any of the above options are used"
echo " their values are not taken)"
exit 1
}

if [ $# -it 10];then`
	help_ani
fi

while getopts n:a:s:W:d opt

do
	case "$opt" in
	n) na ="$OPTARG";;
	a) age ="$OPTARG";;
	s) sex ="OPTARG";;
	w) weight ="$OPTARG";;
	d) isdef = 1;;
	\?) help_ani;;
	esac
done
if[ $isdef -eq 0];then`
echo "Animal Name is  $na, age is $age, sex is $sex, weight is $weight (user defined mode)"
else''
na = "pluto dog"
age = 3
sex = male
weight = 20kg
echo "Animal name is $na, age is $age, sex is $sex, weight is $weight (demo mode)"
exit 1
fi'' 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Im guessing it's because on your last line of the program you have an extra " after fi.

There also seem to be a number of unnecessary backtick characters after a few then and else statements. That could be causing it.

Best wishes,

Mike

Good point. Totally looked right past that. There are spaces to the left and right of all the assignment (=) operators... WOW :)

, Mike

Good point. Totally looked right past that. There are spaces to the left and right of all the assignment (=) operators... WOW :)
, Mike

If it only were that ...

if [ $# -it 10];then`
#                   ^Wrong ` there
#             ^Need extra space there
#           ^Probably 1 (one) and not 10
#        ^-lt, not -it. Stands for `is less than'    
# corrected would be:
# if [ $# -lt 1 ]; then
# meaning: if not arguments where entered show menu

Spaces in the if statement between if and [ ] are important. They need to be respected.
With that in mind I leave if[ $isdef -eq 0];then` for you to figure what's wrong with it.

echo "Animal name is $na, age is $age, sex is $sex, weight is $weight (demo mode)"
exit 1 # Not need it
fi'' # Not need it

Before using the demo mode, those variables need to have something assigned to them since the user hasn't assigned anything.

Guess I got mislead by the error message.. :) I'm surprised a script with so many errors didn't generate a much different one other than unexpected EOF ;)
,Mike

Comments
;)
This article has been dead for over six months. Start a new discussion instead.