我正在编写一个脚本,从用户提供的数字开始打印出用户提供的奇数。
因此,举一个例子,如果您输入要打印出从3开始的5个数字,它将输出3、5、7、9和11。
我当前正在尝试使用以下代码:
echo "Enter how many numbers you want to print"
read n
echo "Enter the first number"
read a
for ((a; a < n; a++)); do
((b = a % 2))
if [ $b -ne 0 ]; then
echo "$a"
fi
done
但是,对于n=5; a=3
,输出不是预期的3
5
7
9
11
,而仅仅是{{1 }}。
答案 0 :(得分:0)
这是逻辑错误,而不是使用bash的问题。如果要打印n
数字,确保发生这种情况的最简单方法是从0
迭代到n
,如下所示:
#!/usr/bin/env bash
n=5; a=3 # of course, you can also read from the user.
if ((a % 2 == 0)); then # if our starting number is even...
(( ++a )) # add 1 to make it odd.
fi
for ((i=0; i<n; i++)); do # iterate from 0 to n...
echo "$((a + i*2))" # ...emitting 2*i+a each time.
done