Refering to compound variables with a variable name


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Refering to compound variables with a variable name
# 1  
Old 12-05-2012
Refering to compound variables with a variable name

Hello,

Here is my problem using KSH
I have a set of compound variables, let say cmp_var1 cmp_var2
The names of these variables are stored in an indexed array.
How can I access the subfields of these compound variables ?
I tried:
Code:
set -A cmp_varnames=(cmp_var1 cmp_var2)
for cmp in ${cmp_varnames[*]}
do
eval ${${cmp}.field}
done

That does not work, I tried a few other things, no luck.
Thanks for helping

Last edited by luky55; 12-05-2012 at 09:27 AM..
# 2  
Old 12-05-2012
Take a look at this thread.
# 3  
Old 12-05-2012
I believe you are trying to do something like this. Note you need Korn shell 93::
Code:
$ cat x
#!/usr/dt/bin/dtksh

## Define Compound variables.
cmp_var1=( code=10 desc="hello" )
cmp_var2=( code=20 desc="world" )

## Create array of compound variables.
set -A cmp_varnames cmp_var1 cmp_var2

## Print the descriptions.
for cmp in ${cmp_varnames[*]}
do
  # Use a name reference instead of eval.
  typeset -n mydesc="$cmp.desc"
  print $mydesc
done

exit 0
$ ./x
hello
world
$

# 4  
Old 12-05-2012
The thread referred to by Phunk will not help you.

Here is a simple working example:
Code:
#!/bin/ksh93

typeset -C cmp_var1
cmp_var1.field=date

typeset -C cmp_var2
cmp_var2.field=whoami

set -A cmp_varnames cmp_var1 cmp_var2

for cmp in ${cmp_varnames[*]}
do
   nameref my=$cmp.field
   $my
done

This User Gave Thanks to fpmurphy For This Post:
# 5  
Old 12-05-2012
Thanks, the typeset -n or nameref works great
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

tcl compound condition

Can anyone explain for me why this does not work in tcl: if !{( $a > "" || $b > "" )} { ....... where a and b are string vars. and this works instead: if {!( $a > "" || $b > "" )} { ........ Thanks. (6 Replies)
Discussion started by: gio001
6 Replies

2. Shell Programming and Scripting

compound Bash if then statement question

I am writing a Bash script that will either clone a database or setup a standby database. So Parameter 2 will be the operation type. If the value is not clone or standby I want to throw an error message. I suppose I can also do a case block. So far i have been unable to get the syntax working... (1 Reply)
Discussion started by: gandolf989
1 Replies

3. Shell Programming and Scripting

compound variable in korn shell

in a text " Korn Shell Unix programming Manual 3° Edition" i have found this sintax to declare a compoud variable: variable=( fild1 fild1 ) but this sintax in ksh and sh (HP-UNIX) not work... why?? exist another solution for this type of variable ??? (5 Replies)
Discussion started by: ZINGARO
5 Replies

4. Shell Programming and Scripting

compound variable in korn shell

in a text " Korn Shell Unix programming Manual 3° Edition" i have found this sintax to declare a compoud variable: variable=( fild1 (0 Replies)
Discussion started by: ZINGARO
0 Replies

5. Shell Programming and Scripting

awk compound statements

how can i use two or multiple statements in the if part of an awk code for example i want to check two flag if they are true i will write some print operations and increase the counter. here is the c version of the code that i want to write: counter=0; if (flag1==1 && flag2==0) {... (7 Replies)
Discussion started by: gfhgfnhhn
7 Replies

6. Shell Programming and Scripting

Compound command with 'find' utility?

I'm trying to write a script using the 'find' command and it's -exec option to run a compound command against the files found. Example: find . -name "*.conf" -exec cat {} | grep "#" > /tmp/comments.list \; Of course the above doesn't work. So I experimented for a bit to see if there was... (6 Replies)
Discussion started by: deckard
6 Replies

7. UNIX for Advanced & Expert Users

Compound indirect variable references

Using bash, I'm trying to read a .properties file (name=value pairs), assigning an indirect variable reference for each line in the file. The trick is that a property's value string may contain the name of a property that occurred earlier in the file, and I want the name of the 1st property to... (5 Replies)
Discussion started by: tkrussel
5 Replies

8. Shell Programming and Scripting

Trying to use 'compound variable' in a script

Erase the space in assigment operator. array_var=`expr $base_val + $x` (1 Reply)
Discussion started by: irina
1 Replies

9. Shell Programming and Scripting

Trying to use 'compound variable' in a script

Hi there - am newish to shell scripting and would appreciate some advice on this... Am trying to use what I have seen called 'compound variables' in other langs but with no success in my shell script. This is the kind of thing I'm trying to do: base_val=123 stop=3 x=1 while do ... (3 Replies)
Discussion started by: neemic
3 Replies

10. UNIX for Dummies Questions & Answers

compound expression in unix

I am using the code below to write a command to launch a script only if the number of users on the system is less than 10. The code below isn't working. Any suggestions? HELP.. if && ; then frizzle ; fi (3 Replies)
Discussion started by: spalmer
3 Replies
Login or Register to Ask a Question