我在这里有这个代码,它应该这样做:
用户输入最大数量。根据输入的数字,我想显示所有偶数,直到该数字。
#! /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)) ]'
答案 0 :(得分:4)
您忘记了do
循环的done
和for
部分。
在任何情况下,您都不能使用{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
是一个数字。