エラー: "[:`]' がありません"、角かっこの前のスペース

エラー:

次のコードを実行すると:

#!/bin/bash

PREVIOUS_COMMIT=e099d95d52b8fca99e47fd7cee5f782287178b27
SERVICE=service-web-prj1

if [ ! git diff "$PREVIOUS_COMMIT" HEAD --name-only | grep -qs "$SERVICE" ] || [ ! git diff "$PREVIOUS_COMMIT" HEAD --name-only | grep -qs 'service-web' ];
    then
        echo Didnt pass first
        exit 0;
fi

echo passed first with $SERVICE

if ( ! echo "$SERVICE" | grep -q "^service-web" );
    then
        echo Didnt pass second
        exit 0;
fi

echo passed second with $SERVICE

入る予定です(状態:

scripts/getLastCommit.1.sh: line 9: [: missing `]'
scripts/getLastCommit.1.sh: line 9: [: missing `]'

周りを見回すと、誰もが最後の「]」より前のスペースに言及しました。 3回確認しましたが、この内容があります。

私が間違っていることを知っている人はいますか?

ありがとう、デニス

これが私にとって効果的であることがわかりました。

if ! echo $GITDIFF | grep -q -e 'service-web*' -e $SERVICE;

ベストアンサー1

testシェル角かっこ内ではコマンド全体をテストできません。これらの角かっこを完全に削除すると、コマンドの終了コードのみがテストされます。

#!/bin/bash

PREVIOUS_COMMIT=e099d95d52b8fca99e47fd7cee5f782287178b27
SERVICE=service-web-prj1

if ! git diff "$PREVIOUS_COMMIT" HEAD --name-only | grep -qs "$SERVICE" || ! git diff "$PREVIOUS_COMMIT" HEAD --name-only | grep -qs 'service-web'
then
        echo "Didn't pass first"
        exit 0
fi

echo passed first with "$SERVICE"

if ( ! echo "$SERVICE" | grep -q "^service-web" )
then
        echo "Didn't pass second"
        exit 0
fi

echo passed second with "$SERVICE"

おすすめ記事