Visit Our UNIX and Linux User Community


Array Element


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Array Element
# 1  
Old 12-05-2014
Array Element

This question is for someone that's more familiar with Array Element.

I need to know if the maximum array element that can be assigned is 1024 and if its so, Is there a workaround solution when the counter exceeded 1024?


Code:
 
param_array[counter]="$param_nam"
counter=$counter+1
#to avoid space issue in the param
eval real_value=\"param_value\"
param_array[counter]=\"$real_value\"
counter=$counter+1

When the parm_value is more than 750 we do lose parameter value and I need to find out if there is a workaround using array element since there is a limitation to it.

Our shell script is korn shell on AIX platform.

Thanks


Moderator's Comments:
Mod Comment Please use code tags next time for your code and data. Thanks

Last edited by vbe; 12-05-2014 at 01:42 PM.. Reason: code tags... not PARSE
# 2  
Old 12-05-2014
My advice, for dealing with these limits, is "when in doubt -- don't". If you might exceed the maximum size of an array, don't use an array! Tweaking it into working "for now" without solving the limits problem anywhere else is a temporary solution at best.

These limits are heavily shell and system specific, not just the kind of shell but the branch (there are several 'kinds' of ksh) and version. Making a script which abuses these limits could strand it on your system.

There is also a tendency to use shell arrays as a hammer -- when all you have is a hammer, the world looks like a nail. In many cases these are suboptimal and never required arrays in the first place, there may be more appropriate solutions to whatever you're doing.

So please explain what you are doing -- and do NOT say "trying to make a bigger array"! What is this array holding? Why do you need it?
# 3  
Old 12-05-2014
You could also use a conf file for all those entries....
Even if it looks as simple as this:
Code:
var1="param_name1"
var2="param_name2"
...

While just reading from such a file is very easy using IFS="=" and a while read, any kind of 'dynamic' reading of a certain variable might become more complex.

There is the option to save each entry into a single file.

I just had help to avoid shell injection with my scripts regarding conf file modification Reading and Writing a conf file - Suggestions and improvements?.

Their function:
Code:
# List all variables (NOT values!)
tui-conf-get -l "FILE"

# Get value
tui-conf-get "FILE" "VAR"

# Set value
tui-conf-set "FILE" "VAR" "VAL"

Maybe they could be of help?
# 4  
Old 12-13-2014
Quote:
Originally Posted by cumeh1624
Our shell script is korn shell on AIX platform.
I'd like to start with that: in AIX "ksh" is a Korn Shell 88, "ksh93" is a Korn Shell 93. Because the two behave differently in this regard, which one do you use?

Quote:
Originally Posted by cumeh1624
I need to know if the maximum array element that can be assigned is 1024 and if its so, Is there a workaround solution when the counter exceeded 1024?
This is so for ksh88, not so for ksh93 and the workaround is to use a different algorithm. I agree with Corona688: whatever you do you probably do it in a wrong way anyway.


Quote:
Originally Posted by cumeh1624
Code:
 
counter=$counter+1
counter=$counter+1

These two lines will either lead to syntax errors or not do what you expect them to do. Instead use one of the following:

Code:
(( counter = counter + 1 ))
(( counter += 1 ))

Quote:
Originally Posted by cumeh1624
Code:
 
#to avoid space issue in the param
eval real_value=\"param_value\"

Yikes! My advice is to stay away from "eval" as long as possible. It is a perfect recipe to shoot yourself into foot.

My suggestion is to explain what you want to achieve (instead of trying to find loopholes to make possible a pseudosolution which is bad anyway) and we will find a way to do that - without workarounds and most probably without "eval".

I hope this helps.

bakunin

Previous Thread | Next Thread
Test Your Knowledge in Computers #763
Difficulty: Medium
L4 caches are currently very common in computer systems.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multiplying array element

I am trying to take all the elements of an array and multiply them by 2, and then copy them to a new array. Here is what I have i=0 for true in DMGLIST do let DMGSIZES2="${DMGSIZES}"*2 let i++ done unset i echo ${DMGSIZES2} It does the calculation correctly for the first element,... (7 Replies)
Discussion started by: nextyoyoma
7 Replies

2. Programming

How to delete a duplicate element from below array.

Hello forum , Please solve the below queery. A sorted array which has repated elements. A = {1,2,3,3,4,5,5,5,6,9,9} i want to delete the duplicate elements and to genrate a new array. i need the array sholud be like this A = {1,2,3,4,5,6,9}. Please write the piece of code... (4 Replies)
Discussion started by: workforsiva
4 Replies

3. Emergency UNIX and Linux Support

Assigning zero to element of ksh array.

set -A matched #find referenced files. for i in ${file_names_html} do counter_j=0 for j in ${file_names_minus_index} do match=`cat $i | grep... (1 Reply)
Discussion started by: robin_simple
1 Replies

4. Shell Programming and Scripting

previous element in the array perl

Hi, How to get previous/next element in the array perl Example @queue = (1, 2 ,3 , 4); I want to get value of 1 and 2, or, 2 and 3, or 3 and 4...etc and compare to value which one is greater to do that I need to get previous and next element of array ? (1 Reply)
Discussion started by: guidely
1 Replies

5. Shell Programming and Scripting

How to assign an array element to a variable

Hi every one.. I'm new to shell scripting... I would like to assign a single array element to a variable... Is it possible to do it.... Could any body help me.... (3 Replies)
Discussion started by: kaushik_87
3 Replies

6. Shell Programming and Scripting

remove an element from array

I need to remove an element from the below array variable TABLENAME. #!/bin/ksh set -A TABLENAME "mirf roxar keke mirs" echo "the array is ${TABLENAME}" If i need to remove say keke and have the final TABLENAME as below, how this could be achieved. Pls throw some light. echo "Modified... (3 Replies)
Discussion started by: michaelrozar17
3 Replies

7. Shell Programming and Scripting

HELP unsetting array element in loop

I have a loop and I need to be able to unset the array element that I am currently accessing in it. I was thinking of making a counter that increments with the loop and doing unset $dirs but if I do that I am not sure if the other members of the array would get shifted down in index (meaning that... (2 Replies)
Discussion started by: msf5042
2 Replies

8. Shell Programming and Scripting

Shift array element

I want to delete and 0th element of array in shell scrpit and also shift all others to one level up. (2 Replies)
Discussion started by: darshakraut
2 Replies

9. Shell Programming and Scripting

Adding array element in KSH

All, I would like to add the first 10 elements of an array. Here is how I am doing it now (only included first few add ops): #!/usr/bin/ksh ###Grab the array values out of a file### TOTAL=`awk '/time/' /tmp/file.out | awk '{print $4}'` set -A times $TOTAL SUM=$((${times} + times... (3 Replies)
Discussion started by: Shoeless_Mike
3 Replies

10. Shell Programming and Scripting

accessing my first element of array

Hello everyonel, I have an array set like so num=4 read name arr=name I go through while loop to assign different values to different array element from 1 to 4. when I try to access the FIRST element of the array I get the last one first. Like if I say ${arr} it will show the last element... (4 Replies)
Discussion started by: afadaghi
4 Replies

Featured Tech Videos