[ $x!=57 && $x!=59 && $x!=29 && $x!=53 ]
[ é um comando, obedece às mesmas regras, digamos, ls . && é uma maneira de agrupar comandos condicionalmente. Em [ foo && bar ] , o shell executa o comando [ foo e, se for bem-sucedido, será executado bar ] . O comando [ falha porque espera ver um ] como seu último argumento e, portanto, o segundo comando não é executado.
A sintaxe condicional especial [[ .. ]] , no entanto, suporta && dentro dela, portanto, você pode usar [[ $x != 57 && $x != 59 && ... ]] . Observe que ainda requer espaços em branco em torno dos operadores. Plain $x!=57 seria um teste para ver se $x!=57 é uma string não vazia, o que sempre é, independentemente do valor de x .
Ou coloque o ] de fechamento antes do && : [ "$x" != 57 ] && [ "$x" != 59 ] && ...