scripting problem

Eric "Shubes" plug at shubes.net
Fri Feb 16 14:56:07 MST 2007


Eric "Shubes" wrote:
> Eric "Shubes" wrote:
>> David wrote:
>>> On Fri, 16 Feb 2007, Eric \Shubes\ wrote:
>>>
>>>> Here's a good Friday afternoon exercise for you script animals out there.
>>>> For example,
>>>> $ arglist="parm1 \"this is parm2\" parm3"
>>>> $ command $arglist
>>>>
>>>> command receives:
>>>> $?=5 $1=parm1, $2="this, $3=is $4=parm2" $5=parm3
>>>>
>>>> What I want command to receive is:
>>>> $?=3 $1=parm1, $2=this is parm2, $3=parm3
>>> Not sure if its the same, but the below worked.
>>>
>>> ---------------
>>> #!/bin/sh
>>>
>>> ls "${1}"
>>> ls "${2}"
>>> ls "${3}"
>>> -------------------
>>>
>>> Invoked as:
>>> scriptname.sh "this is" a param
>>>
>>> resulted in:
>>>
>>> ls: this is: No such file or directory
>>> ls: a: No such file or directory
>>> ls: param: No such file or directory
>>>
>>>
>>> David
>> I wasn't quite clear enough I guess. Since I'm building a variable number of
>> parameters, I can't specify each one separately, and thus cannot use quotes
>> when invoking the command.
>>
>> Using your example, I need to do:
>> argument="this is"
>> scriptname.sh $argument a parm
>> and have it come out the same as your example. I can't put the whole thing
>> in quotes because I have a list of arguments, some containing spaces and
>> some not.
>>
>>
> Here's a simple example script:
> 
> myfunc(){
> echo "#=$#, 1=$1, 2=$2, 3=$3, 4=$4, 5=$5"
> }
> parm1=parm1
> parm2="this is parm2"
> parm3=parm3
> parm4="words for parm4"
> args="$parm1 $parm2 $parm3 $parm4"
> myfunc $parm1 "$parm2" $parm3 "$parm4"
> myfunc $args
> 
> I need to invoke myfunc in the second manner and achieve the same result as
> the first invocation.
> 
Dang! I think I found something. This works:

parm1=parm1
parm2="this is parm2"
parm3=parm3
parm4="words for parm4"
args="$parm1 \"$parm2\" $parm3 \"$parm4\""
myfunc $parm1 "$parm2" $parm3 "$parm4"
eval myfunc $args

but when I tried it late last night (early morning, actually) I wasn't able
to get it to work. Must've been something else wrong with it.

Let me plug this method into the real script, and I'll get back here.


-- 
-Eric 'shubes'


More information about the PLUG-discuss mailing list