我在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!
我希望在未设置变量时退出。我错过了什么吗?
答案 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
。