如何从用户提供的输入中打印偶数

时间:2017-11-24 22:26:48

标签: linux bash

我在这里有这个代码,它应该这样做:

用户输入最大数量。根据输入的数字,我想显示所有偶数,直到该数字。

#! /bin/bash
echo "What is your max number:"

read counter


for number in {0.."$counter"}

if [ (($number % 2 == 0)) ]
then
echo "$number"
fi

但它不起作用。相反,当我从终端调用脚本时,我收到此错误:

[root@sunshine Desktop]# bash Tester
What is your max number:
9
Tester: line 9: syntax error near unexpected token `if'
Tester: line 9: `if [ (($number % 2 == 0)) ]'

2 个答案:

答案 0 :(得分:4)

您忘记了do循环的donefor部分。 在任何情况下,您都不能使用{a..b}语法的变量, 不幸。 你需要编写一个计数循环。 然后你可以增加2, 这消除了对偶数的检查:

for ((number = 0; number < counter; number += 2)); do
    echo "$number"
done

最后,我建议将变量重命名为:

  • counter - &gt; max
  • number - &gt; counter

全部放在一起:

#!/bin/bash

echo "What is your max number:"    
read max

for ((counter = 0; counter < max; counter += 2)); do
    echo "$counter"
done

答案 1 :(得分:2)

更简单的方法:

seq 0 2 $counter

变量可以传递给大括号扩展,使用bash的另一个调用:

bash -c 'printf "%i\n" {0..'$counter'..2}'

eval

eval 'printf "%i\n" {0..'$counter'..2}'

最后两种方法都不安全,除非确定$counter是一个数字。