循环打印奇数而不打印应有的数量

时间:2018-11-22 17:26:40

标签: bash

我正在编写一个脚本,从用户提供的数字开始打印出用户提供的奇数。

因此,举一个例子,如果您输入要打印出从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 }}。

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