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 [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
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
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
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
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
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
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]