I am using getopts utility to give user different options while executing the script. Here is my script.
Here is the output when i execute the code
Now i want replace these shortoptions with proper names by using longoptions
-e signifies export backup, so i want to replace -e with -exp
-r signifies rman backup, so i want to replace -r with -rman
-o signifies OID configuration,so I want to replace -o with -oid
We have --long in getopts but i never used, can you guys please help me out with this change.
Hi veeresh_15,
Your script is using getopt, not getopts. They are very different. And you want to use getopts. (The getopt utility is not built-in in the shells and can't correctly process quoted option-arguments in lots of cases. The use of getopt for option parsing was deprecated more than two decades ago.)
You should not replace short options with long options; you should add support for long options while keeping support for short options. (And note that long options should be introduced by two hyphens; not one. So, your code should accept -e, --exp, -o, --oid, -r, and --rman.) And, people using your script should not be required to enter -- to specify the end of options unless the sid operand starts with a hyphen.
Using getopts with long options is a non-standard extension that is provided in various ways by some shells on some operating systems (and is frequently either undocumented or poorly documented). What OS are you using?
You appear to be using ksh, but from what you have shown us, we can't tell if it is a 1988 Korn shell or a 1993 Korn shell. I think the following sample code will work with any 1993 version of ksh and I know it will also work on the 1988 version of ksh (and /usr/xpg4/bin/sh and /usr/xpg6/bin/sh) on some Solaris 10 systems.
Your code seems to only work if exactly one option is specified on the command line and three operands (or -- followed by two operands) are specified. The following sample code will work with one, two, or all three options and two operands (with or without -- before the operands). The -- argument is only required if the first operand's first character is a hyphen.
If you save the following in your file test.ksh:
and make it executable with:
then any of the following commands:
produce the output:
This User Gave Thanks to Don Cragun For This Post:
Thanks a lot Don Cragun for your detailed explanation and sample code!
... ... ...
Sir, I have a question about
in your code.
Can you tell me what exactly this statement is doing?
Regards,
Veeresham
The variable OPTIND is set by getopts to indicate the next command line argument to be processed. (After the options and, if present, -- have been processed.) The command:
then shifts off everything except the operands that remain after the options have been processed.
This User Gave Thanks to Don Cragun For This Post:
Hi. Can somebody please show me an example of how to use getopts to assign a variable if it's been passed into the script but to set a default if no value has been passed in? And also how to handle a param with multiple values ... so a sub parse (can I use a function for this?)?
Here's my code... (1 Reply)
Hi All,
I am writing a script to pass the getopts argument to the function which I have. But it as soon as I execute the script, the argument is taking it as blank. I tried using multiple way to check but its not working.
Can someone please let me know what wrong in this code.
function1()... (4 Replies)
while getopts v OPTION
do
case $OPTION in
v) echo "Hello" ;;
*) exit 1;;
esac
done
Suppose I have script tmp.sh
Whose Signature is tmp.sh <fixed_argument>
When I run the script with tmp.sh -v "file", it echoes a hello but, when I try the other way i.e, tmp.sh... (1 Reply)
Hi all...
I have been looking on here for the past few days for an answer and Im gonna have to break down and ask.
I just learned about the getopts command last week so have been trying to utilize it in my scripts.
Below, I am trying to set up a case structure for options using getopts.... (1 Reply)
First off, I apologize for my lack of knowledge. I realize my problem will probably seem pretty basic to everyone, but I've been at this for several hours now and I've gotten nowhere. I would contact my professor, but it is too late for that.
Anyway, I'm trying to write a function called... (1 Reply)
Hey, i need help with the use of getopts in shell script.
tried reading a lot online, but found incomplete examples (maybe complete but cudn't make out). PLzz help...explain in deatil plzzz, i am a newbie:confused: (3 Replies)
Hi,
I have a program where I want to use getopts.
I want to use "-i" option and then optionally supply arguments.
If user dosent supply arguments, then also it should work.
Please tell me how to proceed.
Here is some code, this is not right code btw but a sample to understand what I want to... (1 Reply)
I am having some trouble/questions with getopts that I can't find any solid info on with google
I need it to parse things of the syntax of:
-r # # # -f -c
with as many repeats as possible, and it should catch erroneous commands also, but continue going...
my first question is, -r... (3 Replies)
Is there a restriction on levels of using 'getopts' ? I have several scripts, each of which requires an option as the first parameter .
If I call one prg separately it works fine, but when one prg calls another prg and passes the option on the called prg, then the called prg
seems not to process... (3 Replies)
I have a script that facillitates NDM (Connect::\Direct) transfer to remote hosts. This script uses getopts to parse through the parameters passed to it and to set appropriate variables based upon what was passed in.
Kickoff="mv $PATH/$FILE1 $PATH/$FILE2"
ndm_shell.ksh -p $Node -s $Source -d... (3 Replies)