Você não pode testar comandos inteiros dentro dos colchetes test
do shell. Você deseja remover esses colchetes completamente, o que fará com que ele simplesmente teste o código de saída dos comandos.
#!/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"