退出使用:?在bash中

时间:2017-11-17 15:36:50

标签: bash

我在bash脚本的顶部有以下内容:

 "${PROJECT_DIR:?"Need to set PROJECT_DIR by sourcing <project dir>/setup.sh"}"
 echo "D'oh!"

当我使用.来源时,我得到以下信息:

-bash: PROJECT_DIR: Need to set PROJECT_DIR by sourcing <project dir>/setup.sh
D'oh!

我希望在未设置变量时退出。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,:?不适合这项工作。请考虑一下:

[ -n "$PROJECT_DIR" ] || {
  echo "Need to set PROJECT_DIR by sourcing <project dir>/setup.sh" >&2
  return 1 || exit 1
}
在调用return之前,

source跳转到父解释器。如果失败,大概是你的脚本被执行而不是来源,所以我们会回到exit