scripting problem

Eric "Shubes" plug at shubes.net
Fri Feb 16 14:51:01 MST 2007


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.

-- 
-Eric 'shubes'


More information about the PLUG-discuss mailing list