Em primeiro lugar, nunca faz sentido dizer
if condition; then
do something
elif condition is false; then
do something different
fi
Porque, se condition não for verdadeiro, você sabe que é falso.
Você pode apenas dizer
if condition; then
do something
else
do something different
fi
Agora pense na lógica do seu script.
É um algoritmo n 2 - ou, para ser mais preciso,
se $chain for m palavras longas, e o arquivo for n linhas longas,
então o código pode potencialmente fazer loop em m × n vezes.
Agora pense no que isso significa para o seu problema:
Você está dizendo que $i é um novo usuário
se você encontrar qualquer usuário ( $user ) no arquivo diferente.
Mas $i é apenas um novo usuário
if todos os usuários no arquivo é diferente de $i .