Se você executar zipinfo -t foo.zip , o status de saída (de $? ) dará um erro se o arquivo zip não tiver nada nele. Na versão que estou executando (3.00), isso será 1 , mas imagino que seja apenas um código de erro geral, portanto, a ambigüidade pode causar outros problemas.
Você também terá que lidar com a saída de texto do comando, que é uma string com informações básicas sobre o arquivo. Creio que esta resposta é semelhante a uma das anteriores.
Edit: Se você quiser evitar o valor de retorno ambíguo (e você está com disposição para grep ), você poderia grep a saída do comando acima para "Arquivo zip vazio". / p>