刚刚学linux的shell编程 新手不懂。求指点

刚学linux的shell编程 新手不懂。求指点
输出1-100的质数,
#!/bin/bash
read h
for ((i=1;i<=$h;i++))
do
for ((j=2;j<$i;j++))
do
if [ $[$i % $j ] -eq 0 ]
then flag=1
else
flag=0
fi 
done
if [ $flag -eq 0 ]
then echo $i
fi
done
怎么不对啊,求指点啊、、、
------解决方案--------------------
C 写 工具,然后用 脚本调用他
------解决方案--------------------

#!/bin/bash
read h
for ((i=1;i<=$h;i++))
do
flag=0
for ((j=2;j<$i;j++))
do
if [ $[$i % $j ] -eq 0 ]
then flag=1
fi
done
if [ $flag -eq 0 ]
then echo $i
fi
done

------解决方案--------------------

for ((i=1;i<=$h;i++))
改为for ((i=2;i<=$h;i++))

------解决方案--------------------

#!/bin/bash

read h

for ((i=1; i<=$h; ++i))
do
    flag=0
    for ((j=2; j<=i/2; ++j))
    do
        if [ $[$i % $j] -eq 0 ]; then
            flag=1
        fi
    done
    if [ $flag -eq 0 ]; then
        echo $i
    fi
done


输出:

# bash prime_number.sh
100
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

------解决方案--------------------
前面加个
set -x
shell调试模式,只能帮你到这里了。
------解决方案--------------------
为啥要用shell搞这么麻烦的玩意?
我的处理方法是:麻烦到一定程度一律用perl。