The code I posted above is working with one caviat. In the function code,
my preference is to remove the files as they are processed as the code in red indicates. This cannot be done as currently implemented because STATS_INPUT_FILENAMES_F is generated in the function and if files are deleted, the size of the resulting array changes between function calls. This blows up the array ranges that the function is trying to select.
If I want to delete files as processed, it would appear that I would need to create the sub-lists outside of the function and then pass in the arrays. That puts me back to passing in the arrays as arguments or waiting on deletion.
As long as the file list array is not defined as a local variable in the parent shell, the subshells running the function don't need to redefine the array; it will be inherited.
Perhaps the following script with a revised version of your function and a new function that takes one operand specifying the number of invocations of your function to run concurrently, splits the list of files into subsets, invokes your function, and waits for all invocations to complete will provide a useful example:
Note that I changed a couple of references to $FOLD in your function to instead refer to $FOLD_F. It isn't obvious to me whether $FOLD and $SET will be the same in all of your function calls or not. If they will be the same, you can probably drop the 1st two operands to your function and just inherit the values of $FOLD and $SET from the invoking shell. Similarly, if the reference file is the same in all invocations of your function, you can set it once in the invoking shell instead of duplicating that processing in each function invocation.
Note that if you might run this with fewer files than the number of concurrent invocations, you'll probably want to change:
to something more like:
If this sample code looks like it is doing what you want, remove (or replace) the code in red to use your real data.
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.
#/bin/ksh... (5 Replies)
Hello,
I need to collect some statistical results from a series of files that are being generated by other software. The files are tab delimited. There are 4 different sets of statistics in each file where there is a line indicating what the statistic set is, followed by 5 lines of values. It... (8 Replies)
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)
Hi, guys
I just wanted to sort the elements of an array ascendingly.
I know the following code does work well:
array=(13 435 8 23 100)
for i in {0..4}
do
j=$((i+1))
while ]
do
if } -le ${array} ]]
then :
else
min=${array}
${array}=${array}
${array}=$min
fi... (5 Replies)
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)
Hi All,
the below is my requirement..
i need to split the file based on line and put that files in a array and need to access that files through loop finally i should send the files through mail..
how can we achieve this ..I am new to shell script please guide me..
I am using KSH..
... (11 Replies)
Hi,.
I am writing a script to get the new files and split them.
Requirement
Find the new files under the path "/wload/scmp/app/data/OAS" (There are 5 sub folders).
Gunzip the files which are having .gz suffix.
Put the list of files in the filename in the format... (0 Replies)
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)
Hi,
If this is the array that is being returned to me:
How would I get the values for each of the 3 records?
This works for 1 Record:
foreach $item (@results)
{
($id, $id2, $name, $date, $email) = split(/\|/, $item, 5);
print "$name<br>";
} (2 Replies)
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)