ksh parsing arguments in a string rather than from the cmdln
Hi. I have a piece of code that reads and parses command line options. I'd like to alter it slightly to read from a string (that's set elsewhere in the script) rather than directly from the command line (arg). Can somebody show me how to do this? Many thanks.
My code is as follows:
Instead of reading the arguments from command line I'd like the code to read from the following variable that's set inside the KSH script:
or
Hi. I have a piece of code that reads and parses command line options. I'd like to alter it slightly to read from a string (that's set elsewhere in the script) rather than directly from the command line (arg). Can somebody show me how to do this? Many thanks.
My code is as follows:
Instead of reading the arguments from command line I'd like the code to read from the following variable that's set inside the KSH script:
or
Many versions of the Korn shell include a getopts that supports both long options and short options (although support for long options isn't always mentioned in the ksh man page). If you could introduce your long options with -- instead of a single -, you might want to try the following replacement for your code:
and see what happens when you invoke it with:
and:
When I try the above two commands with ksh on macOS High Sierra (version 10.13.1), I get the output:
and:
Thanks Don. But how do I read the parameters into that case statement from a variable set within the script rather than the command line?
You can also use a subfunction to parse the command line and feed it the string:
Note that if you use a subfunction like above you need to get the parsed values out of the function somehow, because the variables in it are now local to the function.
You can also use a subfunction to parse the command line and feed it the string:
Note that if you use a subfunction like above you need to get the parsed values out of the function somehow, because the variables in it are now local to the function.
I hope this helps.
bakunin
Hi bakunin,
Note that typeset is not in the standards and the way it behaves varies some between shells. In bash declaring a variable with local or with typeset makes the variable definition have a scope that is local to the function and values assigned to such variables are not visible when the function returns to its caller. But, a variable that is not declared with local nor with typeset has a global scope and if such a variable is assigned a value inside a function, the value assigned in the function will still be visible when the variable is expanded outside of the function.
In ksh, declaring a variable with typeset in a function does not give it a local scope; it has a global scope. The ksh command language does not have a local keyword or built-in function.
So, in both ksh and bash, if you change:
in your sample to:
The values assigned to VERSION, HOST, and DEBUG in the function parse_cmd can be found after parse_cmd completes by just expanding those variables with $VERSION, $HOST, and $DEBUG.
Note that I removed the 1st assignment to DEBUG. I don't see any reason to assign it the value TRUE and then immediately assign another value (DEBUG) to it.
I have a shell script, which has a function, which call a perl script. Also it has a shell function call parse_ars as fogllow:
#!/bin/ksh
load_ici_dat() {
cd ${OUTPUT_DIR}
typeset batch_file=XRED${MM}${DD}
typeset SCRIPT="${PROG}.pl"
echo "time ${PERLEXE5X} ${PERL_HOME}/${SCRIPT}... (1 Reply)
]I have a string like "/abc/cmind/def/pq/IC.2.4.6_main.64b/lnx86" and this string is given by user. But in this string instead of 64b user may passed 32 b an i need to parse this string and check wether its is 32b or 64 b and according to it i want to set appropriate flags.
How will i do this... (11 Replies)
Hi,
I've a python script called aaa.py and passing an command line option " -a" to the script like, ./aaa.py -a
& Inside the script if the -a option is given I do some operation if not something else.
code looks like
./aaa.py -a
.
.
if options.a
---some operation---
if not options.a... (1 Reply)
Hi,
I am not very skilled using ksh scripts.
How do I create a ksh script that will accept arguments and use them in the script ?
I need to make this:
Run this command with this argument:
./mykshprogram.ksh madsen
and sometimes I need to do this:
Run the ksh again with 2... (3 Replies)
Hi all,
I am trying to use long arguments for my existing script. right now my script would work if given <script_name> -t <arg1> -b <arg2> -v <arg3>. The script code is shown below.
while getopts t:v:b: OPT;do
case "$OPT" in
t) Todo=$OPTARG;;
b) Batch=$OPTARG;;
... (3 Replies)
Hi unix guru's
I want to execute a shell script like ksh printdetails.ksh Andy,Bob,Daisy,Johnson
like passing all the four names in the as the arguments and these arguments are varies between 1 to 10.
How to pass these names to the shell script variable.
and also i want to know the count... (4 Replies)
Looking for a little help parsing some command line arguments in a bash script I am working on, this is probably fairly basic to most, but I do not have much experience with it.
At the command line, when the script is run, I need to make sure the argument passed is a file, it exists in the... (3 Replies)
Hey guys,
I have this file generated by me... i want to create some HTML output from it.
The problem is that i am really confused about how do I go about reading the file.
The file is in the following format:
TID1 Name1 ATime=xx AResult=yyy AExpected=yyy BTime=xx BResult=yyy... (8 Replies)
Is there a way to get the command line arguments.
I am using getopt(3) but if the arguments are more than one for a particular option than it just ignores the second argument. For eg
./a.out -x abc def
now abd will be got with -x using getopt "( x : )" and string abc\0def will get stored... (7 Replies)