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 #395
Difficulty: Medium
HP produced an RMB implementation for Microsoft Windows called HP Instrument BASIC for Windows.
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