Scripting 如果第一个条件返回false,为什么在csh的逻辑AND操作中检查这两个条件

Scripting 如果第一个条件返回false,为什么在csh的逻辑AND操作中检查这两个条件,scripting,csh,Scripting,Csh,如果第一个条件返回false,为什么在csh的逻辑AND运算中检查这两个条件 我遇到以下错误: HOME_EXIST:未定义的变量 您的问题是,即使&&是惰性的,csh也会在开始计算表达式之前尝试替换$HOME_EXIST:。 您可以通过使用嵌套的ifs来解决这个问题 #!/bin/csh set i=0 if ($i == 1 && { -e $HOME_EXIST } )then echo "Hi" else echo "Hello" endif 您的问题是,即使&

如果第一个条件返回false,为什么在csh的逻辑AND运算中检查这两个条件

我遇到以下错误:

HOME_EXIST:未定义的变量


您的问题是,即使&&是惰性的,csh也会在开始计算表达式之前尝试替换$HOME_EXIST:。 您可以通过使用嵌套的ifs来解决这个问题

#!/bin/csh
set i=0
if ($i == 1 && { -e $HOME_EXIST } )then
  echo "Hi"
else
  echo "Hello"
endif

您的问题是,即使&&是惰性的,csh也会在开始计算表达式之前尝试替换$HOME_EXIST:。 您可以通过使用嵌套的ifs来解决这个问题

#!/bin/csh
set i=0
if ($i == 1 && { -e $HOME_EXIST } )then
  echo "Hi"
else
  echo "Hello"
endif

使用
$?
检查变量是否已定义:
如果($?HOME\u存在),则
(想干什么就干什么)

endif

使用
$?
检查var是否已定义:
如果($?HOME\u存在),则
(想干什么就干什么)

endif

我不想使用嵌套的ifs。如果是使用嵌套的ifs,那么我必须使用重复的代码。@UnfinedBehaviour如果你想要好看的代码,那么不要使用csh:-)我不想使用嵌套的ifs。如果是使用嵌套的ifs,那么我必须使用重复的代码。@UnfinedBehaviour如果您想要好看的代码,那么不要使用csh:-)