A matemática em bash deve ser executada em arithmetic context . Em sua implementação atual, você está fornecendo "$ n", "%" e "2" como argumentos para [ , que não executa matemática. Aqui está um exemplo que executa o contexto aritmético de matemática n:
if [ "$((n % 2))" -eq 0 ]
No exemplo acima, os resultados do $(()) são expandidos pelo shell antes de serem vistos pelo comando [ . Você pode simplificar isso removendo a chamada para [ :
if (( (n % 2) == 0 ))