如何使用zsh函数';如果可以的话,我们会回来吗?

如何使用zsh函数';如果可以的话,我们会回来吗?,zsh,Zsh,我正在尝试创建一个函数,该函数检查目录是否存在,如果存在则返回1,否则返回0。这是一个实用函数,我在if语句中使用它。这是密码 function bean-exists { if (( $# < 1 )); then print "usage: $0 BEAN_NAME" >&2 exit -1 fi if [[ -e "${YAHMDIR}/beans/$1" ]]; then echo "FOUND" return 1 f

我正在尝试创建一个函数,该函数检查目录是否存在,如果存在则返回1,否则返回0。这是一个实用函数,我在if语句中使用它。这是密码

function bean-exists {
  if (( $# < 1 )); then
    print "usage: $0 BEAN_NAME" >&2
    exit -1
  fi

  if [[ -e "${YAHMDIR}/beans/$1" ]]; then
    echo "FOUND"
    return 1
  fi

  return -1
}    

if (bean-exists "hosts"); then
  echo YEAH
else
  echo NOPS
fi
什么时候,如果找到的话,应该打印是的。有人能给我解释一下发生了什么吗?

在Unix shell中(与许多其他编程语言相反)
0
表示true,任何其他(整数值)表示false。这与Unix程序在成功完成时返回
0
有关,任何其他值(通常在1到255之间)都表示某些负面结果或错误

因此,如果文件存在,则应返回
0
,如果文件不存在,则应返回
1

当您返回
1
时,
if
将其解释为
false
,并转到
else
分支


如果未找到文件,则函数在结尾处实际返回1。这是正确的,但从您的描述来看,我希望
返回0

谢谢!最后那
return1
是一个打字错误。原始代码有一个
返回-1
。我修正了它,这样它就不会让看问题的人感到困惑。
FOUND
NOPS