我有一个很难清除的错误。所有应该发生的事情就是测试两个条件,然后做一些事情。目标是它是空的还是匹配的。
if [ -z "$_BRANCH" ] || [[ "$_BRANCH" = "master" ]]; then
_FOE_BRANCH="master"
[ -s "$module_dir/branch.gitploy" ] && _FOE_BRANCH=$(cat "$module_dir/branch.gitploy")
[ "$_FOE_BRANCH" -ne "master"] && _BRANCH=$_FOE_BRANCH
fi
由于某种原因我不断收到此错误
[: missing `]'
对于这条线
if [ -z "$_BRANCH" ] || [[ "$_BRANCH" = "master" ]]; then
但当我阅读并试图清除它时,我一直在循环。我预计一切都会好起来的https://stackoverflow.com/a/16138899/746758。
我想阻止这一点,因为我确实看过类似的帖子,并且在没有进行多次错误更正的情况下没有发布此帖子,所以据我所见,这不是重复的到 Bash if 语句 [: 缺少 `]' 错误或者if 条件中的括号:为什么我会收到没有空格的语法错误? ,据我所知,答案中不存在空格问题。我相信我在词典上有一个匹配,我认为这是一个不同的问题,需要一个解决方案。
答案1
您确定错误是在第一行吗?最后一个测试缺少一个空格。改变
[ "$_FOE_BRANCH" -ne "master"] && _BRANCH=$_FOE_BRANCH
到
[ "$_FOE_BRANCH" -ne "master" ] && _BRANCH=$_FOE_BRANCH
另外,既然你说的是嘘,这可能不一定是 bash,您可以更改第一行以继续使用[
而不是[[
,这可能在某些 shell 上不起作用:
if [ -z "$_BRANCH" ] || [ "$_BRANCH" = "master" ]; then