![shは[:欠落 `]'を得るために2つの条件をテストします。](https://linux33.com/image/46669/sh%E3%81%AF%5B%EF%BC%9A%E6%AC%A0%E8%90%BD%20%60%5D'%E3%82%92%E5%BE%97%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB2%E3%81%A4%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%82%92%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
解決するのは非常に難しいバグがあります。何が起こるかは、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