netbsd-help: Interesting problem with csh shell script??

Subject: Interesting problem with csh shell script??
To: None <help@adsl-216-103-105-65.dsl.snfc21.pacbell.net>
From: None <refling@stanfordalumni.org>
List: netbsd-help
Date: 05/26/2003 23:15:11
Can someone point out what is going on with the following csh shell
script?
# cat 1
#!/bin/csh -f 
if { false } then
 echo START OF FALSE
 if { true } then > /dev/null
 echo TRUE BLOCK
 endif
 echo CANNOT BE HERE
else
 echo ELSE
endif
# ./1
CANNOT BE HERE
To my way of thinking, it should print out ELSE but does not. If the
"> /dev/null" is placed in the { } block, then it works as expected, as
below... How can changing the location of the redirection alter the
nesting of the blocks??? csh and tcsh both do the same.
# cat 2
#!/bin/csh -f 
if { false } then
 echo START OF FALSE
 if { true > /dev/null } then
 echo TRUE BLOCK
 endif
 echo CANNOT BE HERE
else
 echo ELSE
endif
# ./2
ELSE

AltStyle によって変換されたページ (->オリジナル) /