housed@infmx.informix.com (Darryl House) (11/28/90)
My sincerest thanks to all those who replied to my question about shell variable substitution. As is usually the case, the answer was plainly visible in the man pages. If my thank-you letter didn't get to anyone who responded, it is only because the mail bounced. A summary: The question was: how to get a shell variable to contain the contents of another that is referenced by concatenating two others. A simple shell script was included that illustrated the problem. I won't include it here in the interest of bandwidth conservation. An abashed thanks also to those who correctly chided that no shell variable expansion occurs within single quotes. It was a Monday, after all, when I wrote the fragment within a mailtool without running it and it was the second attempt at posting it and it doesn't really have anything to do with the illustration and I was worried about a bald tire on my car and I'm left-handed and I promise I won't do it again. Sheesh! ;-} ;-) :-) Most of the solutions involved using eval. One of the folks who replied put it most succinctly when he said it was "a shell verb that runs a string through the shell variable substitution logic twice instead of once." Many people offered variations of the solution, and this was typical of the solutions using eval: change ITERATION=${$PREFIX$SUFFIX} to ITERATION="$"$PREFIX$SUFFIX then change echo Iteration is $ITERATION to ITERATION=`eval "echo $ITERATION"` echo "Iteration is $ITERATION" Another interesting solution used grep and sed. Though is the mildest of cases, I love it when this OS gets really cryptic :-) ITERATION=`grep $PREFIX$SUFFIX $0 | sed -e "s/$PREFIX$SUFFIX=//" -e 's/"//g'` Again, thank you very much. Take care, and have a a nice day! --darryl "Although robust enough for general use, adventures into the esoteric periphery of the C shell may reveal unexpected quirks." -- /usr/man/man4.03/man1/csh.1