Esta pergunta já tem respostas aqui :
Comentários
- Para aqueles que estão se perguntando: essas não são declarações de várias linhas!
- Se você apenas deseja verificar se a string
Sharedaparece na saída do comando você pode querer considerar o uso do status de saída do grep diretamente, por exemploipcs | { if grep -q "Shared"; then echo "true"; else echo "false"; fi }ouipcs | grep -q "Shared" && echo "true" || echo "false"– consulte unix.stackexchange.com/a/48536/65304 por exemplo
Resposta
Sua missing ]" o erro ocorre porque você precisa de um espaço entre "Shared" e ], então a linha deve ser if [ "$(ipcs | grep Shared | awk "{print $2}")" == "Shared" ]; then.