for X in {18..2500} ;
是我脚本中的一行,意思是逐个选择,如:18,19,20,21,22,23 ....直到2500
然而我发现我现在只需要偶数:18,20,22,24 ..... 2500
那么稍微修改一下该怎么办?
由于
编辑: 这是打击......
我的脚本现在更改为:
#!/bin/bash
TASK=1101;
NUM=9;
TEND=1100;
for X in {18..2500};{
if (X % 2 == 0);
do
echo "$X echo \"Wait until $NUM job is done\" $NUM" ;
NUM=$((NUM+2)) ;
X=$((X+1)) ;
TEND=$((TEND+100)) ;
echo "$X -t $TASK-$TEND jobs.sh" ;
TASK=$((TASK+100)) ;}
done
但得到的错误如下: 第15行:意外标记“do”
附近的语法错误答案 0 :(得分:4)
您可以指定增量:
for X in {18..2500..2}
A sequence expression takes the form {x..y[..incr]}, where x and y are
either integers or single characters, and incr, an optional increment, is
an integer.
或者
for X in `seq 18 2 2500`
答案 1 :(得分:3)
这不是C ++。这是一个bash脚本。
您的for
- 循环需要以do
:
for X in {18..2500}; do
你的if
-statement syntax关闭了。它应该是这样的,请注意then
:
if [[ $((X % 2)) == 0 ]]; then
if
- 阻止结束:
fi
for
- do
块以:
done
更好的是......取消if
语句并使用Bash的for
-loop construct仅生成偶数:
for ((X = 18; X <= 2500; X += 2)); do
echo "$X echo \"Wait until $NUM job is done\" $NUM" ;
# ...
done
答案 2 :(得分:1)
尝试使用模数运算符。在几乎所有语言中,它看起来都像这样:
if (x % 2 == 0) // …Do something
这是有效的C代码,但可以轻松应用于其他语言。
您可以将mod运算符视为放置在同一位置的除法符号,但不是返回除法的结果而是返回余数。因此,在此代码中,如果除以2的余数为0,则它均匀地除以2,因此它甚至可以定义。
答案 3 :(得分:1)
如果您的语言具有for(;;)
语法,则可以
for (X = 18; X <= 2500; X += 2)
答案 4 :(得分:0)
您可以做几件事:
for {18..2500} {
if(x mod 2 = 0){
做点什么;}
for {18..2500}第2步{
做点什么;}