解決するのは非常に難しいバグがあります。何が起こるかは、2つの条件をテストしてから何かを行うことです。ターゲットは空であるか一致するかです。
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である必要はありません。[
代わりに、使用を続行するように最初の行を変更できます[[
。一部のシェルでは機能しない場合があります。
if [ -z "$_BRANCH" ] || [ "$_BRANCH" = "master" ]; then