我在这里有这个代码,它应该这样做:
用户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
循环的do
和done
部分。 无论如何,不幸的是,你不能用{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
是一个数字。