On Mon, Nov 15, 2010 at 12:41:19PM +0530, Ajay Jain wrote: > I use 'getopts' in my shell script. If I run script normally, it works > fine. However, the moment I run the script in the current shell (ie . > <script.sh>), it fails returning error. Basically it is not able to > parse the arguments. Any reason, why?
If you type . ./script.sh then the arguments you pass to script.sh are whatever your "$@" (positional parameter vector) just happens to have at the moment. imadev:~$ . ./bin/args 1 args: <something ;`ls /`> imadev:~$ echo "$@" something ;`ls /` And no, don't ask why I have that in my interactive shell's "$@", because I truly don't remember. I blame IRC. If you type some actual ARGUMENTS after the script name, then those are used as "$@". imadev:~$ . ./bin/args one two 2 args: <one> <two> So, you need to invoke the script properly.