How to pass array as an arguement ?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to pass array as an arguement ?
# 8  
Old 01-15-2009
Again, there is no need to invoke the script with "sh". Just use "./scriptname".

Also as already suggested, maybe use a different ksh on a different box or on the same, doesn't matter.
# 9  
Old 01-15-2009
Now I change the permission and I tried to execute withou sh /ksh as below .

But results in the same problem

Code:
[orcl10gdb@SVRDELLD41 flexiSchema]$ cat test1.ksh
#! /usr/bin/ksh
set -a arr1
echo "...In Test1...."
arr1[0]="APPS_DEV"
arr1[1]="TEST_DEV"
echo ${arr1[*]}
./test2.ksh  "${arr1[*]}"
[orcl10gdb@SVRDELLD41 flexiSchema]$ cat test2.ksh
#! /usr/bin/ksh
#set -a arr2 "$@"
echo "...In Test2...."
echo  "array all : ${arr2[*]} "
echo  "${arr2[0]}"
[orcl10gdb@SVRDELLD41 flexiSchema]$ ./test1.ksh
...In Test1....
APPS_DEV TEST_DEV
...In Test2....
array all :

[orcl10gdb@SVRDELLD41 flexiSchema]$

Raj.
# 10  
Old 01-15-2009
Try another version ksh.

Last edited by zaxxon; 01-15-2009 at 07:29 AM..
# 11  
Old 01-15-2009
Even I am stuck with the issue ..

btw there was one # before declaring array2 in test2.ksh .
I removed it ... and issue remain the same .

Code:
[orcl10gdb@SVRDELLD41 flexiSchema]$ cat test1.ksh
#! /usr/bin/ksh
set -a arr1
echo "...In Test1...."
arr1[0]="APPS_DEV"
arr1[1]="TEST_DEV"
echo ${arr1[*]}
./test2.ksh  "${arr1[*]}"
[orcl10gdb@SVRDELLD41 flexiSchema]$ cat test2.ksh
#! /usr/bin/ksh
set -a arr2 "$1"
echo "...In Test2...."
echo  "array all : ${arr2[*]} "
echo  "${arr2[0]}"
[orcl10gdb@SVRDELLD41 flexiSchema]$ ./test1.ksh
...In Test1....
APPS_DEV TEST_DEV
...In Test2....
array all :

[orcl10gdb@SVRDELLD41 flexiSchema]$

Any help ? Anybody ?

Raj.
# 12  
Old 01-15-2009
I doubt you yet tried all examples I have given. So I again... I start to having a lot of Deja Vues in this thread... try this:

Code:
cat test1.ksh


#! /usr/bin/ksh
set -A arr1 "APPS_DEV" "TEST_DEV"
echo "...In Test1...."
echo ${arr1[*]}
./test2.ksh "${arr1[*]}"


Code:
cat test2.ksh


#! /usr/bin/ksh

set -A arr2 "$@"
echo "...In Test2...."
echo  ${arr2[0]}


Output:
Code:
./test1.ksh
...In Test1....
APPS_DEV TEST_DEV
...In Test2....
APPS_DEV TEST_DEV

The above code gathers all elements of the array in test1 to 1st element of the array in test2, but just to show it's working.

The <n>th time: If this still does not work, try another box or another ksh if available!
# 13  
Old 01-15-2009
Sorry Zaxxon for troubling you too much .

I made one more change . Changed -a to -A on declaring array .
Now its working fine .

Code:
[orcl10gdb@SVRDELLD41 flexiSchema]$ cat test1.ksh
#! /usr/bin/ksh
set -A arr1 "APPS_DEV" "TEST_DEV"
echo "...In Test1...."
arr1[0]="APPS_DEV"
arr1[1]="TEST_DEV"
echo ${arr1[1]}
./test2.ksh  "${arr1[*]}"
[orcl10gdb@SVRDELLD41 flexiSchema]$ cat test2.ksh
#! /usr/bin/ksh
set -A arr2 "$1"
echo "...In Test2...."
echo  "array all : ${arr2[*]} "
echo  "${arr2[0]}"
[orcl10gdb@SVRDELLD41 flexiSchema]$ ./test1.ksh
...In Test1....
TEST_DEV
...In Test2....
array all : APPS_DEV TEST_DEV
APPS_DEV TEST_DEV
[orcl10gdb@SVRDELLD41 flexiSchema]$

But still , Is there any method to get only selected index values from array ?



like arr2[0] , arr2[1] like that .

Right now, it is echoing entire array rather than a specific value.

Btw, there was no other box / ksh available .

Here my aim is to pass the array as argument to an executable script ( (something like test2.sh) and there to call Oracle procedure with value from this array as parameter .
Right now the plan is to call the procedure like this

EXEC prc1(arr[0],arr[1],arr[2],arr[3]) ;

But I dont want to call test.sh with these parameters but with only one parameter (array)

But in test2.sh , I need to select the array value one by one.

Raj.
# 14  
Old 01-15-2009
When you declare an array with
Code:
set -A arr1 "APPS_DEV" "TEST_DEV"

then you don't have to it twice with
Code:
arr1[0]="APPS_DEV"
arr1[1]="TEST_DEV"

That's redundant. Just stick to the 1st line with set -A... and leave the following redundant declaration of the elements out.

2nd, since the shell already offers to talk to each parameter with $1, $2, $3 etc., you don't need to put them into a new array but can just use them directly.
If you insist to write them to a new array, maybe change your script test2.ksh to
Code:
#! /usr/bin/ksh
set -A arr2 $@
echo "...In Test2...."
echo  "array all : ${arr2[*]} "
echo  "ELE1: ${arr2[0]}"
echo  "ELE2: ${arr2[1]}"

When using $@, just leave the " " around it away so every space between them makes them to a single element of the array.

If it works, then it looks like:
Code:
./test1.ksh
...In Test1....
ELE0: APPS_DEV
ELE1: TEST_DEV
Whole array: APPS_DEV TEST_DEV
...In Test2....
array all : APPS_DEV TEST_DEV
ELE0: APPS_DEV
ELE1: TEST_DEV


The code I used for that is:
Code:
cat test1.ksh

#! /usr/bin/ksh
set -A arr1 "APPS_DEV" "TEST_DEV"
echo "...In Test1...."
echo "ELE0: ${arr1[0]}"
echo "ELE1: ${arr1[1]}"
echo "Whole array: ${arr1[*]}"
./test2.ksh  "${arr1[*]}"


cat test2.ksh

#! /usr/bin/ksh
set -A arr2 $@
echo "...In Test2...."
echo  "array all : ${arr2[*]} "
echo  "ELE0: ${arr2[0]}"
echo  "ELE1: ${arr2[1]}"

I don't know the background, but maybe you just use $1,$2,$3 etc. directly instead of complicating it with arrays. Maybe you don't need them.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to pass first array value?

Hi, I am creating filesystem for block device, but I want to pass array value one by one acording to block device count. $tmp1 = block device count 3 $blockdevice = So I want to first pass sdb1 alone in loop, how to take only block device seprately from $blockdevice array. (1 Reply)
Discussion started by: stew
1 Replies

2. Shell Programming and Scripting

Pass array to a function and display the array

Hi All I have multiple arrays like below. set -A val1 1 2 4 5 set -A val2 a b c d . . . Now i would like to pass the individual arrays one by one to a function and display/ do some action. Note : I am using ksh Can you please advise any solution... Thanks in advance. (7 Replies)
Discussion started by: Girish19
7 Replies

3. UNIX for Dummies Questions & Answers

Pass array to shell and print

How do i pass an array from test4.sh to a function in another shell script test5.sh, basically i am sourcing the test5.sh in test4.sh and printing the contents, but not working below are my trial scripts, please help, thank you. #!/bin/bash # /usr/local/dw/archive/test5.sh print_array() {... (5 Replies)
Discussion started by: Ariean
5 Replies

4. Shell Programming and Scripting

How to pass filename as arguement to awk command?

Hi, I am facing one issue. The awk command works fine if i hardcode the file name but if is pass it as an arguement it doesn't work. For e.g:Below commands works fine awk -v A="$type" '{F=substr($0,23,8) "_LTD_" A ".txt"; print $0 >> F; close(F) }' RL004.txt But the below command does not... (2 Replies)
Discussion started by: Neelkanth
2 Replies

5. Shell Programming and Scripting

How to pass an array as arg to a script..

Hi, Please guide to pass an array as a arg to a script... for example, I have a script small.sh to find the small no of given arg as below... #! /bin/sh # this script is for finding the small number set -A arr_no_updates small=$1 i=1 for arr in $@ do if (3 Replies)
Discussion started by: little_wonder
3 Replies

6. Shell Programming and Scripting

Perl Function Array Arguement Passing

Hi All, I have some questions regarding array arguements passing for Perl Function. If @array contains 2 items , arguements passing would be like Code_A. But what if @array needs to add in more items, the rest of the code like $_ will have to be modified as well (highlighted in red), which is... (5 Replies)
Discussion started by: Raynon
5 Replies

7. Shell Programming and Scripting

How to pass an array from SHELL to C function

Hi, I have an output generated from a shell script like; 0x41,0xF2,0x59,0xDD,0x86,0xD3,0xEF,0x61,0xF2 How can I pass this value to the C function, as below; int main(int argc, char *argv) { unsigned char hellopdu={above value}; } Regards Elthox (1 Reply)
Discussion started by: elthox
1 Replies

8. Shell Programming and Scripting

How to pass ksh array to oracle

Hi all.. Does anyone know have an example of passing the contents of a ksharray to oracle? basically I am looking to loop through the contents of a file and store each line into a bash ksh. Once i have this I can then pass the array into an oracle procedure that accepts an array as an... (1 Reply)
Discussion started by: kiranlalka
1 Replies

9. UNIX for Dummies Questions & Answers

How To Pass an Array Variable

Hi, I have a master BASH shell script where I define a bunch of variables: $var1=why $var2=is $var3=(this so hard) I would then like to call another shell script and pass these variables to it: $script2 $var1 $var2 $var3 This works fine for var1 and var2. However, var3 is an array,... (9 Replies)
Discussion started by: msb65
9 Replies

10. Shell Programming and Scripting

Can we pass array with call by value in function

I want to pass an array in my function, And my function will be changing the elements of the array in the fuction, but it should not affect the values in my array variable of main function (1 Reply)
Discussion started by: ranjithpr
1 Replies
Login or Register to Ask a Question