Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!usc!wuarchive!emory!att!cbnews!cbnewsm!marz From: marz@cbnewsm.att.com (martin.zam) Newsgroups: comp.unix.internals Subject: Re: puzzle Summary: fix for broken shell script... Message-ID: <1990Nov27.184104.14084@cbnewsm.att.com> Date: 27 Nov 90 18:41:04 GMT References: <1990Nov27.003659.3521@informix.com> Distribution: usa Organization: AT&T Bell Laboratories Lines: 78 In article <1990Nov27.003659.3521@informix.com>, housed@infmx.informix.com (Darryl House) writes: > The following is a Bourne shell script that illustrates > what I am trying to do: set a shell variable that > contains the contents of another one that is referred > to by concatenating two others. Sufficiently confusing? > Yeah, I thought so, too. > > -------------------------------------------------------- > #! /bin/sh > > # what I want is to be able to set > # the ITERATION variable to be the expanded > # version of $PREFIX$SUFFIX, i.e. the first iteration > # would be the contents of $firsttime, the second > # would be the contents of $secondtime. The following > # code gives me errors, and everything I try either gets > # the same substitution failure or just echoes the name > # of the variable, i.e. ($firsttime and $secondtime). > > echo > > firsttime="first_time" > secondtime="second_time" > > PREFIX_WORDS="first second" > SUFFIX="time" > > for PREFIX in $PREFIX_WORDS > do > > # the following line doesn't work, but > # sort of illustrates what I want to do. > # I want this to be ITERATION=$firsttime the first time > # through and ITERATION=$secondtime the second time. > > ITERATION=${$PREFIX$SUFFIX} > > echo 'Iteration is $ITERATION' > done > > echo > > exit 0 > -------------------------------------------------------- > > Required output: > > prompt% program_name > > Iteration is first_time > Iteration is second_time > > prompt% > > Any hints you can offer will be greatly appreciated. Try this... firsttime="first_time" secondtime="second_time" PREFIX_WORDS="first second" SUFFIX="time" for PREFIX in ${PREFIX_WORDS} do ITERATION="${PREFIX} ${SUFFIX}" # These variables need to be # expanded individually, and the # quotes preserve the space # between them. echo "Iteration is $ITERATION" # Your single quotes didn't allow # variable expansion to take place. done Hope this helps, Martin Zam (201)564-2554