Re: csh: how to use indirect ref to env vars

2008-07-07 Thread michael
On Wed, 2008-06-25 at 08:03 -0700, ss11223 wrote:
 On Jun 25, 9:40 am, michael [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
  with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
 
 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
 

it only works if csh is invoked without -e (stop on error)


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



csh: how to use indirect ref to env vars

2008-06-25 Thread michael
Hi, I have a csh script 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 [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: csh: how to use indirect ref to env vars

2008-06-25 Thread Wackojacko

michael wrote:

Hi, I have a csh script 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



maybe use  (empty string) instead of 0 in the comparison.

HTH

Wackojacko


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]




Re: csh: how to use indirect ref to env vars

2008-06-25 Thread michael
On Wed, 2008-06-25 at 15:02 +0100, Wackojacko wrote:
 michael wrote:
  Hi, I have a csh script 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
  
 
 maybe use  (empty string) instead of 0 in the comparison.

but I want to check that $InMetFiles is non-empty and then check
$InTerFile is non-empty, not that $Vars is non-empty...


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: csh: how to use indirect ref to env vars

2008-06-25 Thread ss11223
On Jun 25, 9:40 am, michael [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
 with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]

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


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: csh: how to use indirect ref to env vars

2008-06-25 Thread michael
On Wed, 2008-06-25 at 08:03 -0700, ss11223 wrote:
 On Jun 25, 9:40 am, michael [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
  with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
 
 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


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: csh: how to use indirect ref to env vars

2008-06-25 Thread ss11223
On Jun 25, 12:40 pm, michael [EMAIL PROTECTED] wrote:

 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

 --

Not quite, see the section for eval in the csh man page.  The idea
is to use
eval to re-evaluate the variable after the name substitution.

Here is a cleaner version of the concept:


#!/bin/csh

setenv Var1 3

foreach Vars (Var1 Var2 Var3)
echo checking $Vars\.\.\.
setenv temp '${?'$Vars'}'
eval setenv temp2 $temp
if ( $temp2 != 1 ) then
echo $Vars not set \- aborting
exit 1
endif
end


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]