Modifying the values of dynamically named arrays


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Modifying the values of dynamically named arrays
# 1  
Old 05-04-2012
Modifying the values of dynamically named arrays

Hi all,

In ksh, I'm trying to loop through all of my arrays, named array1, array2, array3..., and update the indices. But I'm getting errors and I'm not sure how to fix them. The errors are

./parse.sh[22]: 6+1: not found

The code is:

Code:
eval \${array$c[2]}=$(eval \${array$c[1]}+1 )

Any help would be appreciated. Thanks.

Last edited by nicksantos1; 05-04-2012 at 01:40 PM..
# 2  
Old 05-04-2012
What's your system? What's your shell? And what are you actually trying to do, here? If you need to use eval to do something, you might have taken the wrong fork in the road somewhere, or might even be using the wrong programming language.

There's alternatives to arrays for instance. You can keep lists inside strings like "a b c d e" and split at need. Or in KSH, you can use associative arrays, and use entire strings as array indexes, letting you use one big array and avoiding the need for eval yet again.
# 3  
Old 05-04-2012
Sorry about that. I'm on AIX and using KSH.

I'm just trying to update the index of an array on this line

Code:
eval \${array$c[2]}=$(eval \${array$c[1]}+1)

# 4  
Old 05-04-2012
Are you trying to emulate 2-dimensional arrays? If so try:
Code:
eval "array$c[2]=\$(( \${array$c[1]}+1 ))"

If not could you elaborate on what you are trying to achieve?
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 05-04-2012
This works, thanks.

I'm not sure if arrays are the best data structure for this problem.
I'm trying to store the name, accumulative transaction time, and # of occurrences of thousands of methods in a log file. And this seemed like the easiest way to handle it.
So every method will have its own array. When the next line of the log is read, the script will find which array the method is stored in, add the time to the total time in index 1 and increment the count in index 2.

Last edited by nicksantos1; 05-04-2012 at 02:22 PM..
# 6  
Old 05-04-2012
Quote:
Originally Posted by nicksantos1
I'm trying to store the name, accumulative transaction time, and # of occurrences of thousands of methods in a log file. And this seemed like the easiest way to handle it.
awk is almost certainly better suited to this. There may be limits on the size and number of shell variables, especially, which could become a severe problem here, but awk's only limit is memory itself. Show your problem in more detail please.
# 7  
Old 05-04-2012
And that cannot be done with one-dimensional arrays or perhaps associative arrays, which are supported in ksh93?
For example:
Code:
$ Numberplate[Blue_Ferrari]=XX-123-55
$ car=Blue_Ferrari
$ echo "${Numberplate[$car]}"
XX-123-55

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Dynamically merging 2 files on header values

Hi All, I have 2 files which i need to merge together based on the column names provided in the file. The first line in both files are header records. The first file has fixed columns but second file can have subset of the columns from file 1 File 1: ... (6 Replies)
Discussion started by: kushagra
6 Replies

2. Programming

Retreving the dynamically allocated values from bdb using C

In one of the assignment which i am working on, i am am trying to insert keys and values into BDB by reading the input records from a input file as below. Here keys i am inserting as character buffer and for values i am dynamically allocating the memory using malloc and then inserting into bdb.... (1 Reply)
Discussion started by: AmbikaValagonda
1 Replies

3. UNIX for Advanced & Expert Users

Retreving the dynamically allocated values from bdb using C

In one of the assignment which i am working on, i am am trying to insert keys and values into BDB by reading the input records from a input file as below. Here keys i am inserting as character buffer and for values i am dynamically allocating the memory using malloc and then inserting into bdb.... (1 Reply)
Discussion started by: AmbikaValagonda
1 Replies

4. Programming

modifying 2 or more values using method in Java

i wanna make modification in two or more identifiers,using a method in JAVA , but the only way to do this is by returning a value ,then also only one variable value can be modified .. one way 2 do do this is by use of array and passing its name in method ,, please suggest a different way of doing... (2 Replies)
Discussion started by: upvan111
2 Replies

5. Shell Programming and Scripting

arrays and two values

I have requirement where I need to capture the highest values of items from a feed that runs for N hours. For example lets assume my data looks like this first feed ======== appples 10 oranges 20 pears 14 second feed ========== apples 5 oranges 30 pears 1 Last feed... (6 Replies)
Discussion started by: BeefStu
6 Replies

6. Shell Programming and Scripting

Storing values in arrays

I have the following csh script which lets the use pass the following as an argument -legend=tag1/tag2/tag3/tag4/tag5/tag6/tag7 We pass a number of tags separated by '/'. I want to save the legend tags in an array and have done as below. How can I improve on this as things are getting quite... (3 Replies)
Discussion started by: kristinu
3 Replies

7. Shell Programming and Scripting

Storing values in arrays using csh

I am reading a number of files but then I want to put the ranges xmin xmax ymin ymax as arrays for each file. Any idea how I can do this??? set j = 1 echo "Welcome $i times" while ( $j <= $i ) echo "$j" set fname = $fin-bst-misf.xy echo " "$fname ... (0 Replies)
Discussion started by: kristinu
0 Replies

8. Shell Programming and Scripting

dynamically adding values in c-shell

I am needing to create a variable(changing) and assign it a value(changing) ... I am using C-Shell.. Example: foreach account in ($Accountlist) set account_connect = "$account/$account_pass" end I want to make set account_connect to store various values ? $account_connect did not... (3 Replies)
Discussion started by: shafi2all
3 Replies

9. Shell Programming and Scripting

Dynamically create arrays

I have a bash challenge. I have several virtualization hosts for which I need to collect VM information. I need to dynamically create an array for each host. The contents of the array should be the list VMs running on the host. Here's the logic; I just need someone to help me with the details:... (0 Replies)
Discussion started by: EdgarTorres
0 Replies

10. UNIX for Advanced & Expert Users

Modifying binary file by editing Hex values ?

Hi , i'm using special binary file (lotus notes) and modifying an hexadecimal address range with windows hex editor and it works fine ! The file is an AIX one and i'm forced to transfert (ftp) it before modifying it and re-transfert ! NOW i would do this directly under AIX ! I can... (4 Replies)
Discussion started by: Nicol
4 Replies
Login or Register to Ask a Question