Re: csh: how to use indirect ref to env vars
On Wed, 2008-06-25 at 08:03 -0700, ss11223 wrote:
> On Jun 25, 9:40 am, michael <c...@networkingnewsletter.org.uk> wrote:
> > Hi, I have acshscript in which I'd like to do set up a list of vars
> > and then to chk each of these are set, something like the below.
> > However, I can't find the magic incantation that allows to to check
> > ${$Vars} eg if $InMetFiles is set on the first loop - suggestions
> > welcome!
> >
> > #!/bin/csh
> > foreach Vars (InMetFiles InTerFile OutDir)
> > echo Checking $Vars\.\.\.
> > if ( ${?Vars} == 0) then
> > echo $Vars not set \- aborting
> > exit 1
> > endif
> > end
> >
> > --
> > To UNSUBSCRIBE, email to debian-user-REQU...@lists.debian.org
> > with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
>
> its ugly but I think this works
>
> #!/bin/csh
>
> foreach Vars (Var1 Var2 Var3)
> echo checking $Vars\.\.\.
> setenv temp '${'$Vars'}'
> setenv temp2 `eval echo 'X'$temp >&/dev/null`
> if ( "$status" != "0" ) then
> echo $Vars not set \- aborting
> exit 1
> endif
> end
ah, I see rather than testing a variable we try and use it and catch any
error... it seems to work as you say... although this seems slightly
more elegant if less easy to add new VarN to:
if ( $?InMetFiles == 0 || $?InTerFile == 0 {etc}) then
echo prob
exit -1
endif
Reply to: