How to pass and read an array in ksh shell script function.?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to pass and read an array in ksh shell script function.?
# 1  
Old 10-16-2019
How to pass and read an array in ksh shell script function.?

I'm able to read & print an array in varaible called "filelist"

I need to pass this array variable to a function called verify() and then read and loop through the passed array inside the function.

Unfortunately it does not print the entire array from inside the funstion's loop.

Code:
#/bin/ksh
set -A filelist val1 val2 val3
set -A FList

verifyfiles()
{
FList="${1[@]}"

for sym in "${FList[@]}"
do
echo "Array in FUNCTION Contains:"
    echo "$sym"
done
}

verifyfiles $filelist

# 2  
Old 10-16-2019
The first posistional parameter is NOT an array, and thus can't be indexed.


How about
Code:
verifyfiles() {  for sym ; do echo "Array in FUNCTION Contains:";     echo "$sym"; done; }
.
.
.
verifyfiles ${filelist[@]}
Array in FUNCTION Contains:
val1
Array in FUNCTION Contains:
val2
Array in FUNCTION Contains:
val3

# 3  
Old 10-16-2019
Quote:
Originally Posted by RudiC
The first posistional parameter is NOT an array, and thus can't be indexed.


How about
Code:
verifyfiles() {  for sym ; do echo "Array in FUNCTION Contains:";     echo "$sym"; done; }
.
.
.
verifyfiles ${filelist[@]}
Array in FUNCTION Contains:
val1
Array in FUNCTION Contains:
val2
Array in FUNCTION Contains:
val3

@Rudic thank you for the inputs. How can we assign the passed array to a variable in the function. I ask this becoz i did not get a chance to go back to my system and try out how to do that.
# 4  
Old 10-16-2019
If your values will never contain spaces, you can "pass" arrays as strings "val1 val2 val3" and split them back inside the function, like this:

Code:
#!/bin/ksh

set -A filelist val1 val2 val3
set -A otherlist q1 q2 q3

verifyfiles() {
        set -A Flist $1
        set -A Qlist $2
        echo "flist[0]=${Flist[0]}"
        echo "qlist[0]=${Qlist[0]}"
}

verifyfiles "${filelist[*]}" "${otherlist[*]}"

This User Gave Thanks to Corona688 For This Post:
# 5  
Old 10-17-2019
Quote:
Originally Posted by Corona688
If your values will never contain spaces, you can "pass" arrays as strings "val1 val2 val3" and split them back inside the function, like this:

Code:
#!/bin/ksh

set -A filelist val1 val2 val3
set -A otherlist q1 q2 q3

verifyfiles() {
        set -A Flist $1
        set -A Qlist $2
        echo "flist[0]=${Flist[0]}"
        echo "qlist[0]=${Qlist[0]}"
}

verifyfiles "${filelist[*]}" "${otherlist[*]}"

Thank you .... Works Perfect @Corona @RudiC.
This User Gave Thanks to mohtashims For This Post:
# 6  
Old 10-17-2019
Would name referencing be useful? This is Corona688's solution using namerefs:
Code:
#!/bin/ksh

set -A filelist val1 val2 val3
set -A otherlist q1 q2 q3

verifyfiles() {
   nameref Flist=$1
   nameref Qlist=$2
   echo "flist[0]=${Flist[0]}"
   echo "qlist[0]=${Qlist[0]}"
}

verifyfiles filelist otherlist

As you are passing by reference you can actually change the contents of the original array, which is probably a bad thing.

Andrew
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to pass the config file lines as variable on the respective called function on a script

I want to make a config file which contain all the paths. i want to read the config file line by line and pass as an argument on my below function. Replace all the path with reading config path line by line and pass in respective functions. how can i achieve that? Kindly guide. ... (6 Replies)
Discussion started by: sadique.manzar
6 Replies

2. Shell Programming and Scripting

Pass C shell array to another C shell script(csh) and shell(sh)

Dear Friends, Please help me on this my script name is send.csh In this i have written the statement like this set args = ( city state country price ) I want to pass this array to another c shell called receiver.csh. and i want to use it in this c shell or how to pass to... (2 Replies)
Discussion started by: SA_Palani
2 Replies

3. 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

4. Shell Programming and Scripting

How to pass an array to a function in shell script.?

hi, I have a array say SAP_ARRAY="s1.txt" SAP_ARRAY="s2.txt" how can i pass this full array to a function. here is the sample code i am using.. CHECK_NO_FILES() { FARRAY=$1 echo "FARRAY = $FARRAY" echo "FARRAY = $FARRAY" ............... (5 Replies)
Discussion started by: Little
5 Replies

5. Shell Programming and Scripting

How to pass parameter to User defined function in shell script?

Hello, Can anyone guide me tin passing parameters into user defined function of shell script (KSH). Here is my code, InsertRecord() { DB_TBL=$(sqlplus $USERID/$PASSWORD@$DATABASE << EOF set head off set feed off set serveroutput on INSERT INTO TBL1 ( OLD_VAL, NEW_VAL, ... (7 Replies)
Discussion started by: Poonamol
7 Replies

6. Shell Programming and Scripting

What is the maximum number of parameter we can pass to a shell script function?

what is the maximum number of parameter we can pass to a shell script function (8 Replies)
Discussion started by: alokjyotibal
8 Replies

7. Programming

How to pass C array as input to Shell script

Hi, In the below C code , i want to pass the array to a unix shel script. my script should called as ex myscript 1,2,3 #include <stdio.h> int main() { int a={1,2,3}; } Thanks, Arun (1 Reply)
Discussion started by: arunkumar_mca
1 Replies

8. 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

9. Shell Programming and Scripting

How to read values that are passed to the shell function in ksh.

In ksh shell, There is a function f1. function f1 { How to read here?? .... .... } I am passing values to fuunction f1 as f1 "A" "B" Please tell me how to read the passed values in function f1. Advance Thanks & Regards Prashant (2 Replies)
Discussion started by: prashant43
2 Replies

10. Shell Programming and Scripting

How to pass arguments to a function in a shell script?

Hi, I have two shell variables $t1 and $t2 which I need to pass to a function in a shell script. The function will do some computation with those two variables and echo the resultant. But I do not know how to pass teh arguments. The function written is f1() {...... ........ } What should... (3 Replies)
Discussion started by: preetikate
3 Replies
Login or Register to Ask a Question