shは[:欠落 `]'を得るために2つの条件をテストします。

shは[:欠落 `]'を得るために2つの条件をテストします。

解決するのは非常に難しいバグがあります。何が起こるかは、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

おすすめ記事