![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Cannot store integer value | bennichan | Shell Programming and Scripting | 5 | 04-10-2008 11:20 AM |
| grep and store | arunkumar_mca | Shell Programming and Scripting | 6 | 01-27-2006 07:31 AM |
| how can i store it ? | shamal | High Level Programming | 2 | 12-08-2001 02:19 AM |
| How to store username | dinplant | Shell Programming and Scripting | 3 | 11-13-2001 06:34 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
store key value
Hi All,
I have a string like echo $var D_PROC=20080723 I_REPROC=N C_TYPE_FILE=INBOUND Now I want it be stored in an associative array so that when we echo $arr[D_PROC] it should be 20080723 |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
Normally, an array would have elements that are numbers. For example:
client[1]=Joe client[2]=Kerry So, you are trying to get to: arr[D_PROC]=20080723 but, D_PROC is not representative of anything (it isn't a variable itself) Please confirm. |
|
#3
|
|||
|
|||
|
I want to store it in an associative array where subscripts may be a string eg
arr[first]=1 arr[second]=2 ...... so when we echo $arr[first] , it should give me 1 |
|
#4
|
|||
|
|||
|
In PHP? No problem.
In Perl? Yep, we call those Hashes. In very nearly any other language? Sure, with varying levels of straightforwardness. In Bash? Not without some seriously-absurd buffoonery. It's almost always better to find another way to do it. Is this absolutely what you need, and no other approach will work? Something like: Code:
key="some_key" array[$(i=0; while [ x${arrayname[$i]} != x ]; do if [ x${arrayname[$i]} == x$key ]; then break; fi; export i=$(($i+1)); done; arrayname[$i]=$key; echo $i)]="value"
Code:
key="some_key"; array[$(i=0; while [ x${arrayname[$i]} != x ]; do if [ x${arrayname[$i]} == x$key ]; then break; fi; export i=$(($i+1)); done; echo $i)]="value"
if [ x${arrayname[$i]} == x ]; then arrayname[$i]=$key; fi
Code:
i=0; while [ x${arrayname[$i]} != x ]; do echo '$array['${arrayname[$i]}']="'${array[$i]}'"'; i=$(($i+1)); done
Code:
key="some_key"; i=0; while [ x${arrayname[$i]} != x ]; do if [ x${arrayname[$i]} == x$key ]; then echo ${array[$i]}; fi; i=$(($i+1)); done
Quite likely to break, full of holes, contains at least one bug, and generally inadvisable to use. Enjoy! Last edited by BMDan; 07-23-2008 at 10:57 AM. |
|
#5
|
|||
|
|||
|
use perl:
Code:
$str="D_PROC=20080723 I_REPROC=N C_TYPE_FILE=INBOUND";
$str=~s/=| /,/g;
@str=split(",",$str);
for($i=0;$i<=($#str+1)/2-1;$i++){
$hash{$str[$i*2]}=$str[$i*2+1];
}
print $hash{'I_REPROC'},"\n";
|
|
#6
|
|||
|
|||
|
How about if one of the value is null ie first_key=1 second_key= third_key=3.
Here the second_key is null.Is the perl script here going to read the values of second_key as " " or the string "third_key" |
|||
| Google The UNIX and Linux Forums |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|