Bash Array connectin to another Array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash Array connectin to another Array
# 1  
Old 09-13-2017
Bash Array connectin to another Array

Hello,

i have a script that i need account_number to match a name.
for exsample :

Code:
ACCOUNT_ID=(IatHG8DC7mZbdymSoOr11w KbnlG2j-KRQ0-1_Xk356s8)

and i run a loop curl requst with this the issue is that i want to know on
which account were talking about so bash will know this :

Code:
IatHG8DC7mZbdymSoOr11w  = hostname1
KbnlG2j-KRQ0-1_Xk356s8 = hostname2

so when my loop has an issue i can get the name and not the code.

Code:
ACCOUNT_ID=(IatHG8DC7mZbdymSoOr11w KbnlG2j-KRQ0-1_Xk356s8)

for account in ${ACCOUNT_ID[@]}
        do
           somecommand

echo "$ACCOUNT_ID got this results:"
     if [[ ]]
 then say somthig
fi

done

so i need the ACCOUNT_ID in this loop to be a name
because now ofcurse it shows me the code

how can i connect the array values to a name ?
is bash dictionary is my answer ?
if so can somone show me an exsample ?

thanks.


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 09-13-2017 at 10:30 AM.. Reason: Added CODE tags.
# 2  
Old 09-13-2017
Hello batchenr,

I think you probably want to use an Associative Array, i.e an unordered list of key to value pairs. Have a look in the man bash pages for the basic information and skip forward to the Arrays section, about 90% of the way down on my display.

Associative arrays are created using declare -A array_name and you add and use values like this:-
Code:
#!/bin/bash

declare -A array_name

array_name["Key1"]="Value1"
array_name["Key2"]="Value2"
array_name["Key3"]="Value3"
array_name["Key4"]="Value4"

for testkey in Key3 Key1
do
   echo "${array_name[$testkey]}"
done

..... and this should give the output Value3 then Value1


Is this what you need, or have I missed the point?


Kind regards,
Robin
This User Gave Thanks to rbatte1 For This Post:
# 3  
Old 09-14-2017
thanks for the replay but i dont think its it.
i do belive it should be with dictionary.

doing this is too specific with the key1 key2

Code:
declare -A array_name

array_name["Key1"]="Value1"
array_name["Key2"]="Value2"
array_name["Key3"]="Value3"
array_name["Key4"]="Value4"

for testkey in Key3 Key1
do
   echo "${array_name[$testkey]}"
done

i want it to go throw all the account codes and know that code=name
and echo the name
# 4  
Old 09-14-2017
Methinks rbatte1 has pointed you in exactly the right direction; you just need to extrapolate / adapt his proposal.
Code:
declare -A names=([IatHG8DC7mZbdymSoOr11w]=hostname1 [KbnlG2j-KRQ0-1_Xk356s8]=hostname2)
for account in ${ACCOUNT_ID[@]};         do echo "ACCOUNT_ID = " $account " has name " ${names["$account"]}; done
ACCOUNT_ID =  IatHG8DC7mZbdymSoOr11w  has name  hostname1
ACCOUNT_ID =  KbnlG2j-KRQ0-1_Xk356s8  has name  hostname2

These 2 Users Gave Thanks to RudiC For This Post:
# 5  
Old 09-17-2017
Quote:
Originally Posted by RudiC
Methinks rbatte1 has pointed you in exactly the right direction; you just need to extrapolate / adapt his proposal.
Code:
declare -A names=([IatHG8DC7mZbdymSoOr11w]=hostname1 [KbnlG2j-KRQ0-1_Xk356s8]=hostname2)
for account in ${ACCOUNT_ID[@]};         do echo "ACCOUNT_ID = " $account " has name " ${names["$account"]}; done
ACCOUNT_ID =  IatHG8DC7mZbdymSoOr11w  has name  hostname1
ACCOUNT_ID =  KbnlG2j-KRQ0-1_Xk356s8  has name  hostname2

Thank you!

i was able to do it like this :
Code:
SIP_ACCOUNT_ID=(ohXlWOHKzX8wPSA9SJ e8s-XPBeAgFGel2T3Izt)

declare -A names=([ohXlWOHKzX8wPSA9SJ ]=server2.pbx [e8s-XPBeAgFGel2T3Izt]=server1.pbx)

for account in ${SIP_ACCOUNT_ID[@]}
        do
echo  " ${names["$account"]} :"
done

WORKS! when the account has an issue it shows the name!
thanks againSmilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash arrays: rebin/interpolate smaller array to large array

hello, i need a bit of help on how to do this effectively in bash without a lot of extra looping or massive switch/case i have a long array of M elements and a short array of N elements, so M > N always. M is not a multiple of N. for case 1, I want to stretch N to fit M arrayHuge H = (... (2 Replies)
Discussion started by: f77hack
2 Replies

2. Shell Programming and Scripting

Bash 3.2 - Array / Regex - IF 3rd member in array ends in 5 digits then do somthing...

Trying to do some control flow parsing based on the index postion of an array member. Here is the pseudo code I am trying to write in (preferably in pure bash) where possible. I am thinking regex with do the trick, but need a little help. pesudo code if == ENDSINFIVEINTS ]]; then do... (4 Replies)
Discussion started by: briandanielz
4 Replies

3. Shell Programming and Scripting

Array in Bash!

sorry I am new to the bash scripting since I was used to c shell programming. I am writting a script in bash for which I have to create an array in bash. I was able to do parse one variable through command line by doing": Lets say the below code is part of temp.bash and is called like: temp.bash... (5 Replies)
Discussion started by: dixits
5 Replies

4. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

5. Shell Programming and Scripting

Store all the passed arguments in an array and display the array

Hi I want to write a script which store all the parameters passed to the script into an array. Once it is stored I want scan through the array and and delete those files for last month present inside the directory. The files in directory is appneded with YYYY_MM_DD. I want to know how can I... (3 Replies)
Discussion started by: dgmm
3 Replies

6. Shell Programming and Scripting

perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the... (0 Replies)
Discussion started by: jimmy_y
0 Replies

7. Shell Programming and Scripting

PHP: Search Multi-Dimensional(nested) array and export values of currenly worked on array.

Hi All, I'm writing a nagios check that will see if our ldap servers are in sync... I got the status data into a nested array, I would like to search key of each array and if "OK" is NOT present, echo other key=>values in the current array to a variable so...eg...let take the single array... (1 Reply)
Discussion started by: zeekblack
1 Replies

8. Programming

Creating an array to hold posix thread ids: Only dynamic array works

I am facing a strange error while creating posix threads: Given below are two snippets of code, the first one works whereas the second one gives a garbage value in the output. Snippet 1 This works: -------------- int *threadids; threadids = (int *) malloc (num_threads * sizeof(int)); ... (4 Replies)
Discussion started by: kmehta
4 Replies

9. Shell Programming and Scripting

create array holding characters from sring then echo array.

Hi, I wish to store $string1 in $string1array a character in each array element. Then i wish to echo the entire array to the screen so that it reads as the normal string again. I have been trying with the code below but does not work. Please help... To put string into array: ... (5 Replies)
Discussion started by: rorey_breaker
5 Replies

10. Shell Programming and Scripting

bash array

I'm trying to move files based on a certain day..my question is on array's, what's wrong with the way I'm stepping through the array? what i have gives me syntax errors..any ideas...so far I have #! /bin/bash sun_d=`cal |grep -v |awk '{printf " " $1}' ` echo "$sun_d" ls -l... (1 Reply)
Discussion started by: gubten
1 Replies
Login or Register to Ask a Question