我有一个难以清除的错误。所有应该发生的是测试两个条件,然后做一些事情。目标是它是空的还是匹配的。
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
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我不断收到此错误
[: missing `]'
Run Code Online (Sandbox Code Playgroud)
对于这条线
if [ -z "$_BRANCH" ] || [[ "$_BRANCH" = "master" ]]; then
Run Code Online (Sandbox Code Playgroud)
但是当我阅读以尝试清除它时,我一直在循环。基于/sf/answers/1129722961/,我预计一切都会好起来。
我想解决这个问题,因为我确实看过类似的帖子,并且没有在没有很多更正失败的情况下发布它,所以就我所见,这与 Bash if 语句 [: missing `]'不是重复的if 条件中的错误或括号:为什么我会收到没有空格的语法错误? ,据我所知,没有答案中的空白问题。我相信我在词典上有一个匹配,我认为这是一个不同的问题,需要一个解决方案。
你确定错误是第一行吗?最后一个测试缺少一个空格。改变
[ "$_FOE_BRANCH" -ne "master"] && _BRANCH=$_FOE_BRANCH
Run Code Online (Sandbox Code Playgroud)
到
[ "$_FOE_BRANCH" -ne "master" ] && _BRANCH=$_FOE_BRANCH
Run Code Online (Sandbox Code Playgroud)
此外,由于您正在谈论sh,它可能不一定是 bash,您可以更改第一行以继续使用[
而不是[[
,这可能不适用于某些外壳:
if [ -z "$_BRANCH" ] || [ "$_BRANCH" = "master" ]; then
Run Code Online (Sandbox Code Playgroud)