如何从用户提供的input中打印偶数字

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

用户input最大数量。 并根据input的号码,我想显示所有的偶数,直到这个数字。

#! /bin/bash echo "What is your max number:" read counter for number in {0.."$counter"} if [ (($number % 2 == 0)) ] then echo "$number" fi 

但它不起作用。 相反,当我从terminal呼叫他的脚本时,我收到这个错误:

 [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)) ]' 

你忘了for循环的dodone部分。 无论如何,不​​幸的是,你不能用{a..b}语法来使用变量。 你需要写一个计数循环来代替。 然后你可以增加2,这将消除偶数的检查:

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

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

  • counter – > max
  • number – > counter

把它放在一起:

 #!/bin/bash echo "What is your max number:" read max for ((counter = 0; counter < max; counter += 2)); do echo "$counter" done 

更简单的方法:

 seq 0 2 $counter 

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

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

或者eval

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

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