Visit Our UNIX and Linux User Community


How to extract the individual element of array where array is assigned to another variable?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to extract the individual element of array where array is assigned to another variable?
# 1  
Old 04-14-2020
How to extract the individual element of array where array is assigned to another variable?

I have one file where at every line an array is defined.
Example:
file.txt
Code:
a=(1 2 3)
b=(4 5 6)
c=(7 8 9)

I have another file file1.txt where the variables are defined
Code:
a 
b
c

in the script, I am sourcing the file source file.txt

the script is like

Code:
while read -r line           
do              
echo "${!line[*]}"              
done < file1.txt

The output is 0.
Basically, I want to print the individual elements of array defined in file.txt.
source file.txt

How to do that?
# 2  
Old 04-14-2020
Hi

You would have better chances with your code, if you would save lists (var="1 2 3")in the file.txt, rather than arrays.
In which case, your code would work just fine - as it is right now.

As a 2nd note, * and @ behave differently for arrays.
Though, you'll get only the first value of an array shown, with this method.

Hope this helps
This User Gave Thanks to sea For This Post:
# 3  
Old 04-14-2020
How to get all the values for array defined in each line?
# 4  
Old 04-14-2020
Perhaps I'm misinterpreting your request but would this suffice?

Code:
. ./file.txt
echo "a[1] = ${a[1]} a[2] = ${a[2]}  a[3] = ${a[3]}"
echo "b[1] = ${b[1]} b[2] = ${b[2]}  b[3] = ${b[3]}"
echo "c[1] = ${c[1]} c[2] = ${c[2]}  c[3] = ${c[3]}"

This User Gave Thanks to Chubler_XL For This Post:
# 5  
Old 04-14-2020
I'm afraid you'll have to deploy the dangerous and deprecated eval like

Code:
while read -r line           
  do    eval echo "\${!$line[*]}: \${$line[*]}"              
  done < file1.txt
0 1 2: 1 2 3
0 1 2: 4 5 6
0 1 2: 7 8 9

These 2 Users Gave Thanks to RudiC For This Post:
# 6  
Old 04-15-2020
Hi,
I found one solution.
The space difference between individual elements in file.txt is the key.
Code:
while  IFS=" " read -r line
do
   for i in ${!line}
   do
      echo "$i"
   done
done < "file1.txt"

Thanks everyone for the solutions.

Previous Thread | Next Thread
Test Your Knowledge in Computers #340
Difficulty: Easy
Apache2 is a web server developed by Apple Computer.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Adding an element to a bash array with a variable

Hello, I have a simple task and I am having some trouble with the syntax. I have a variable with an assigned value, CMD_STRING='-L 22 -s 0 -r -O -A i -N 100 -n' I would like to add that variable to an array. As far as I have been able to look up, the syntax should be something like, ... (4 Replies)
Discussion started by: LMHmedchem
4 Replies

2. UNIX for Advanced & Expert Users

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? param_array="$param_nam" counter=$counter+1 #to avoid space... (3 Replies)
Discussion started by: cumeh1624
3 Replies

3. Shell Programming and Scripting

Array Variable being Assigned Values in Loop, But Gone when Loop Completes???

Hello All, Maybe I'm Missing something here but I have NOOO idea what the heck is going on with this....? I have a Variable that contains a PATTERN of what I'm considering "Illegal Characters". So what I'm doing is looping through a string containing some of these "Illegal Characters". Now... (5 Replies)
Discussion started by: mrm5102
5 Replies

4. Shell Programming and Scripting

Extract specific text from variable and put it into array

Dear community, I have to do something too hard for me :rolleyes:. I hope you can help me. This is an output coming from Oracle query, stored in a file called query.out, there are many rows, but I read them, one by one, using while/read/done. Assuming each row is contained into $line variable... (8 Replies)
Discussion started by: Lord Spectre
8 Replies

5. 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

6. 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

7. 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

8. Windows & DOS: Issues & Discussions

Array element & string variable

Hello, I am trying to assign $string = $a; #a= 10100 print " $string"; # showing 10100 I am using this $string as $result = index($string, $char, $offset); As above, is not capturing binary nos. in following format; $string = '10100'; so index is not working. kindly suggest. (5 Replies)
Discussion started by: shristi
5 Replies

9. 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

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