如果第一个条件返回false

时间:2017-04-11 10:33:11

标签: scripting csh

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

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

我收到以下错误:

  

HOME_EXIST:未定义的变量。

2 个答案:

答案 0 :(得分:1)

你的问题是即使&&是懒惰的,csh会在开始评估表达式Reference之前尝试替换$ HOME_EXIST。 您可以通过使用嵌套ifs解决此问题。

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

答案 1 :(得分:1)

使用$?检查是否定义了var:
if ($?HOME_EXIST) then (do whatever you want) endif