Help in getopts

Hi,

My script will take a input file as a parameter(which is not mandatory) and also an option.
ksh my_script.sh <inputfile> [-n]
The option -n I have given is no way related to the input file.

Now the problem here is when i execute the script specifying the input file and the option(the way as mentioned above), the option part of the code is not working resulting me with no action.
But when i execute the script in this way, I am getting my desired output
ksh my_script.sh -n <inputfile>
But this is not the way i should mention them.

Why the option given at the end is not performing its action.? Is it a rule for getopts or problem with my code?

Please help me regarding this.

Sample code:

#! /bin/ksh
while getopts 'n' option
do
case "$option" in
n)echo "option is n"
;;

?) echo " Bad option specified...."
;;
esac
done

shift `expr $OPTIND - 1`
INPUTFILE=$1
echo $INPUTFILE

Thanks in advance,
Chella

For getopts the options must always be specified before the arguments.
The syntax for your script must be : ksh my_script.sh [-n] <inputfile>

Jean-Pierre.

Thank you very much for the reply.

Can you explain me wat happens wen the option is given at the last?

ksh my_script.sh -n

In this case also I have given the option at the last. This works fine. Am I in the rite track?

where is the problem actually?

Regards,
Chella

If the option is specified after a normal argument, it is considered also as an argument.

In your case, you haven't specified the inputfile, the string "-n" is immediately after the command name so it is taken as an option.

Jean-Pierre.

Thank You for the reply.

Regards,
Chella