Estes são caracteres especiais de expressões regulares.
^
é uma âncora para o início da string (Então, nada pode ser antes da partida)
$
é uma âncora para o final da string (então nada pode ser depois da partida)
|
é OU como você suspeitava
O =~
diz ao bash extended test que a string à direita é uma expressão regular estendida e sairá com 0 para correspondência e 1 para qualquer outra coisa.
[[ if $response =~ (n|no) ]]
é falho porque o if deve estar fora dos colchetes, mas supondo que seja um erro de digitação em sua pergunta, ele será bem-sucedido se a resposta contiver um n
. É provável que você queira as âncoras de início e fim para que somente n
ou no
correspondam.