Primeiro, o comando [ só faz comparações. Você tem que realizar cálculos separadamente. Por exemplo:
var1mod=$((var1 % 2))
if [ $var1mod -eq 0 ]; then
No entanto, uma vez que você parece estar escrevendo seu script para o bash, você pode usar um comando diferente e evitar a etapa extra:
if (( var1 % 2 == 0 )); then
E segundo, você não pode encadear comandos com -a . Isso funciona apenas como um argumento para [ . Mas fora dela, você deve usar && .
Três variantes diferentes:
if [ $var1mod -eq 0 -a $var2mod -eq 0 ]; then
if [ $var1mod -eq 0 ] && [ $var2mod -eq 0 ]; then
if (( var1 % 2 == 0 )) && (( var2 % 2 == 0 )); then
if (( var1 % 2 == 0 && var2 % 2 == 0 )); then
Lembre-se sempre de que a sintaxe de if é um simples if command; then command; fi . Isso significa que [ in if [ é apenas o nome de um comando como ls ou echo .