我在bash中尝试使用以下代码生成素数:
#!/bin/bash
echo "Enter till where u wish to generate"
read num
echo "Generating prime numbers from 2 to $num"
flag="prime"
for i in {2..$num}
do
for j in {2..$((${num}-1))}
do
[ $((${i}%${j})) -eq 0 ] && flag="nprime" || flag="prime"
break
done
[ "$flag" == "prime" ] && echo "$i"
done
执行时,它会抛出一个错误,因为for循环采用花括号中提到的序列,因为它不是一个序列。 你能指导我哪里出错吗?
答案 0 :(得分:2)
man bash
说:
序列表达式采用
{x..y[..incr]}
形式,其中x
和y
是整数或单个字符,incr
是可选的增量,是整数。 / p>
您无法在范围内使用变量。请尝试seq
:
for i in $(seq 2 $num) ; do
请注意incr
的{{1}}介于seq
和x
之间。
答案 1 :(得分:2)
使用:
for ((i=2; i<=$num; i++))