Cmd line arg help in stp

Varun Chandramohan varunc@linux.vnet.ibm.com
Tue Apr 7 03:17:00 GMT 2009


William Cohen wrote:
> Varun Chandramohan wrote:
>   
>> Hi,
>>
>>       Iam looking at a way to iterate the multiple command line
>> arguments i passed with my script.
>>
>> #stap xyz.stp <arg 1> <arg2> <arg3>
>>
>> arc are strings. '$#' gives me the max number of arguments passed and
>> '$1' , '$2' .... gives each of the args. But the number of args iam
>> passing to the script is not fixed.
>>
>> Can somone help me with writing a sample code in system tap that can do
>> this? I need something similar to what the below script does
>>
>> while [ $# -gt 0 ]
>> do
>>
>>   echo $1
>>   shift
>>
>> done
>>
>> or in c we have argc and argv []. Any suggestions? Iam new to stap
>> scripting so please suggest a method to do this or point me to some code
>> that already does something similar. Thanks.
>>
>> Regards,
>> Varun
>>     
>
> You might be able to use the tokenize function and pull out the arguments from a
> single command line string. Something like the following:
>
> probe begin
> {
> 	i = 1
> 	s = tokenize(@1, " ")
> 	while (s != "") {
> 	      printf("element %d: %s\n", i, s);
> 	      s = tokenize("", " ");
> 	      ++i
> 	}
> }
>
> Example output:
>
> $ stap tokennize.stp "a b c d goody baddy"
> element 1: a
> element 2: b
> element 3: c
> element 4: d
> element 5: goody
> element 6: baddy
>
>
>
>
> -Will
>   
Thanks Will and Frank. This is what i wanted.

Regards,
Varun



More information about the Systemtap mailing list