pfinkel@cbnewsb.cb.att.com (paul.d.finkel) (05/14/91)
What follows is part of a script designed to use a program that allows simultaneous user-to-user communication. The shell program is supposed to display a list of users and their ttys. Each line on the list will begin with a number that is supposed to be used as a means of eventually identifying their tty. What I want to do is this: create a bunch of environmental variables that contain the name of a tty. In my script, this information will be in $2. I want the names of the variables to include a number ( the same number displayed on the screen for that particular user). Example: The first line might be-> 1)joey tty17 THe second line 2)les tty90 The third line 2)mel tty99 I want to create a variable called "tty_numb1" associated with that user. The contents of the variable will be "tty17". The following variables will be called "tty_numb2","tty_numb3",etc. I want to use my variable "count" to bump up the name of these variables so that later on, when I prompt the user for a number, his response will allow me to use the variable that contains that same number. I have tried things like: eval tty_numb"$count"=`echo $2` If I then try to echo the contents of my new variable, all I get is the number: Example: echo $tty_numb"$count" This will give me 1 If, as a test, I use the number contained by my "count" variable in my new variable name, I find that the correct data is being stored where I expect it. Example: echo $tty_numb1 This will give me tty17 If I don't use the "eval" command in my original assignment of a value to my variable, the shell will balk: Example: tty_numb"$count"=`echo $2` This will give me: sh: tty_numb1=tty17 not found Here is the script minus the line(s) needed. If you could help, I'd appreciate it, very much. I am running KSH on a 3B2/600 with UNIX V 3.2. ################################################################################ count=1 who|tr -s " "|cut -f1,2 -d" "|while read line do set $line if [ -w /dev/$2 -a $1 != $LOGNAME ] then echo "${count}) $1 $2" # This is where the assigning of variables should # take place. count=`expr "$count" + 1` fi done ############################################################################ echo "Enter tty number: \c" read numb echo $tty_numb"$numb" #This where the user chooses a number associated with #the desired tty.
asg@sage.cc.purdue.edu (The Grand Master) (05/14/91)
In article <1991May13.180547.21281@cbfsb.att.com> pfinkel@cbnewsb.cb.att.com (paul.d.finkel) writes: }I have tried things like: eval tty_numb"$count"=`echo $2` }If I then try to echo the contents of my new variable, all I get is the number: }Example: echo $tty_numb"$count" This will give me 1 }expect it. Example: echo $tty_numb1 This will give me tty17 }echo $tty_numb"$numb" #This where the user chooses a number associated with Try: eval echo $tty_numb$count --------- ### ## Courtesy of Bruce Varney ### # aka -> The Grand Master # asg@sage.cc.purdue.edu ### ##### # PUCC ### # ;-) # # ;'> # ##
pfinkel@cbnewsb.cb.att.com (paul.d.finkel) (05/14/91)
In article <12291@mentor.cc.purdue.edu> asg@sage.cc.purdue.edu (The Grand Master) writes: >In article <1991May13.180547.21281@cbfsb.att.com> pfinkel@cbnewsb.cb.att.com (paul.d.finkel) writes: >}I have tried things like: eval tty_numb"$count"=`echo $2` >}If I then try to echo the contents of my new variable, all I get is the number: >}Example: echo $tty_numb"$count" This will give me 1 >}expect it. Example: echo $tty_numb1 This will give me tty17 >}echo $tty_numb"$numb" #This where the user chooses a number associated with > > Try: >eval echo $tty_numb$count >--------- It took me a while, but here it is: eval tty_numb"$count"=`echo $2` # This line will create a variable named "tty_numb1". # Its contents will be (for example) "tty12" # Later on I will prompt user for the number corresponding to the user echo "Enter number: \c" read number #Then I can rereference (if such a word exists) my variable like this: eval echo $"tty_numb$number" # ^^^^^^^ will be evaluated first leaving # echo $tty_numb1 # # Then ^ will be evaluated # and eventually my correct tty number will be echoed. # I also created a variable for the user's name called: # nuname"$count". It is rereferenced in the same fashion. #Thank you for your help!