Processing arguments in a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Processing arguments in a string
# 1  
Old 06-22-2017
Processing arguments in a string

Hi

The following code works when reading the arguments from the command line but fails when I try to read from a string. So this works

Code:
while [ -n "$1" ]; do
  case $1 in
        -dbversion) if [ "`echo $2 | grep -e '^-[a-z]'`" ]; then { echo "ERROR: missing value for '$1' (seen '$2')"; usage; exit 1; } else { shift; INPUT_VERSION=$1;   } fi ;;
        -type) if [ "`echo $2 | grep -e '^-[a-z]'`" ]; then { echo "ERROR: missing value for '$1' (seen '$2')"; usage; exit 1; } else { shift; INPUT_TARGET_TYPE=$1;   } fi ;;
        -host) if [ "`echo $2 | grep -e '^-[a-z]'`" ]; then { echo "ERROR: missing value for '$1' (seen '$2')"; usage; exit 1; } else { shift; INPUT_HOST=$1;   } fi ;;
  *)    echo "ERROR: unknown argument '$1'"; exit 1;;
  esac
  shift
done

but when I replace the line
Code:
while [ -n "$1" ]; do

witth
Code:
OPTPARMS="-dbversion 11.2.0.4.0 -type backup -host testhost"
 while [ -n $OPTPARMS ]; do

it only sees the "ERROR: unknown argument"

Can somebody please tell me what the problem is?
Many thanks

Please ignore the old code (back ticks, echo etc.).
# 2  
Old 06-22-2017
Hi general_franco,

If you want to manually force arguments, you can use :
Code:
set -- -dbversion 11.2.0.4.0 -type backup -host testhost
while [ -n "$1" ]; do

Regards
Santiago
This User Gave Thanks to chebarbudo For This Post:
# 3  
Old 06-22-2017
Thanks Santiago. I need to pass in a variable into the while loop. The values in $OPTPARMS will change every run.
So
Code:
set -- $OPTPARMS

before the while loop should work, right?

Last edited by user052009; 06-22-2017 at 05:44 PM..
# 4  
Old 06-22-2017
If you use OPTPARMS for passing the info, you need to use it in the case statement as well...
# 5  
Old 06-22-2017
Will the command
Code:
set -- $OPTPARMS

not push the values in $OPTPARMS back onto the input stack?

So the code in the first post will stay the same if I use this cmd before it?
# 6  
Old 06-22-2017
Yes, try and report back...
# 7  
Old 06-23-2017
yes, that works! Smilie
Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

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: typeset... (6 Replies)
Discussion started by: user052009
6 Replies

2. Shell Programming and Scripting

Arguments in variable vs direct string

Hello Community! Let's say that we have some script which counts its arguments number: arguments_count.sh: #!/bin/sh echo "Number of arguments="$#and some test script: test.sh: #!/bin/sh my_args="1 2 3 '4 5' 6" echo "Count of arguments when using my_args:" ./arguments_count.sh $my_args... (12 Replies)
Discussion started by: break_da_funk
12 Replies

3. Shell Programming and Scripting

Processing Multiple Arguments in Command Line Options

Hi All, I am new to scripting. Could you please assist me . Here is my requirement. I have written a script that has 2 option flags defined. -l) calls some function with the arguments passed in front of -l -r) calls second function with the arguments passed in front of -r *) calls the... (7 Replies)
Discussion started by: Jay Deshpande
7 Replies

4. Programming

Processing Arguments pased to Makefile

I have a makefile and want to allow passing -01 -02 -03 for the user to define the level of optimization he wants. Doing this gets make to send an error. make -03 make: invalid option -- '0' make: invalid option -- '3' Usage: make ... (5 Replies)
Discussion started by: kristinu
5 Replies

5. Shell Programming and Scripting

Removing command line arguments from string list

I am passing a list of strings $list and want to remove all entries with --shift=number, --sort=number/number/..., --group=number/number/... Also are removed whether upper or lower case letters are used For example the following will all be deleted from the list --shift=12 --shift=2324... (7 Replies)
Discussion started by: kristinu
7 Replies

6. Shell Programming and Scripting

string manipulation in arguments

Hi all, I have a requirement where I am taking the first argument as argument name and storing the second argument in argument name as value. Thanks to ppl here, i learnt to do it.:p while ( $1 != "" ) set arg = $1 shift set val = "$1" echo "set... (2 Replies)
Discussion started by: animesharma
2 Replies

7. Shell Programming and Scripting

String processing in CSH

Please delete it (0 Replies)
Discussion started by: animesharma
0 Replies

8. Shell Programming and Scripting

Joining string arguments

Hi, how can I join given arguments (not starting from the first one) to form one string, each argument separated by a space. For example, out of 5 given arguments, I'll like to start joining from the 3rd to the last. In python there exists something like ' '.join(sys.argv) and it starts joining... (5 Replies)
Discussion started by: plhelpme
5 Replies

9. Shell Programming and Scripting

string processing

hi, I have a string "satabeltodounixscriptingpleasecheckfortheerros" in the above line if it contains "unix" , i need to take 5 characters after that word. please help thanks in advance Satya (2 Replies)
Discussion started by: Satyak
2 Replies

10. UNIX for Dummies Questions & Answers

String Processing

I had a file with 150k records in it and I ran a tr on it to remove all new lines/CR which created one large record(whoops). Is there a way to add a \n after every 39th character without using 'dd' to turn it back into the original format? dd is way to slow. shell is ksh. (1 Reply)
Discussion started by: bthomas
1 Replies
Login or Register to Ask a Question