shell encuentra números primos
for ((i>101000;i<102000;i++))
i no tiene asignado un valor inicial y comienza desde 0 de forma predeterminada. Aquí está i=101000
if [ $i%$a = 0 ]
Esta oración es incorrecta. Las operaciones aritméticas solo se pueden realizar directamente en (( )), [ ] Es. No es posible juzgar simplemente las expresiones.
Puedes usar expr para calcular, cámbialo a if [ `expr $i % $a` -eq 0 ]
O usa el comando incorporado del shell let para calcular:
let mod=i%a
if [ $mod -eq 0 ]
También
if [ $ret == 1 ] también tiene problemas, juzgue el valor Para igualdad, use -eq; para juzgar la igualdad de cadenas, use =.
== se utiliza en lenguaje C.