Usar parens coloca os comandos em um subshell que nem sempre é o que você deseja. Como alternativa, use chaves:
command && echo "Ok, continuing" || { echo "Check internet connection"; exit 1; }
O truque aqui é que, ao contrário de parens, o comando final entre chaves deve ser seguido por ;.
Por que é necessário um ponto-e-vírgula ou uma nova linha
Um colchete é um argumento válido para um comando. Por exemplo, aqui está uma chave como argumento para echo:
$ echo }
}
Conseqüentemente, se o shell vir:
{ command1; command2 }
O shell interpreta command1 como não tendo argumentos e command2 como tendo um argumento que consiste no caractere }. Um colchete }é interpretado apenas como fechar um agrupamento se seguir um ponto-e-vírgula ou uma nova linha. Para fazer o trabalho acima:
{ command1; command2; }
Subshells e a diferença entre {...}e(...)
Observe que o seguinte é definido xcomo 10, mas que essa configuração é esquecida antes da echoexecução do comando:
$ x=0; false || ( echo Hello; x=10 )
Hello
$ echo $x
0
Com chaves, por outro lado, a configuração de x=10é lembrada:
$ x=0; false || { echo Hello; x=10; }
Hello
$ echo $x
10
A diferença é que atribuições de variáveis em um subshell não sobrevivem após a conclusão do subshell.
Documentação
De man bash:
(Lista)
A lista é executada em um ambiente subshell (consulte AMBIENTE DE EXECUÇÃO DE COMANDO abaixo). As atribuições variáveis e os comandos internos que afetam o ambiente do shell não permanecem em vigor após a conclusão do comando. O status de retorno é o status de saída da lista.
{ Lista; }
A lista é simplesmente executada no ambiente atual do shell. A lista deve ser finalizada com uma nova linha ou ponto e vírgula. Isso é conhecido como um comando de grupo. O status de retorno é o status de saída da lista. Observe que, diferentemente dos metacaracteres (e), {e} são palavras reservadas e devem ocorrer onde uma palavra reservada pode ser reconhecida. Como eles não causam uma quebra de palavra, eles devem ser separados da lista por espaços em branco ou outro metacaractere do shell.
[Enfase adicionada]
()e{}.