仅包含偶数的数组
for X in {18..2500} ;
是我脚本的一行,这意味着逐一选择数字,例如:18,19,20,21,22,23....直到2500
但是我发现我现在只需要偶数:18,20,22,24.....2500
那么我应该稍微修改一下该行怎么办?
感谢
编辑: 它是 bash...
我的脚本现在更改为:
#!/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”附近出现语法错误
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以指定增量:
或者
You can specify the increment:
Or
这不是 C++。这是一个 bash 脚本。
您的
for
循环需要以do
开头:您的
if
-语句语法看起来不对。它可能应该是这样的,注意then
:if
-blocks以:和
for
-do
块结尾为:更好的是...取消
if
语句并使用 Bash 的for
-循环构造 仅生成偶数:This is not C++. This is a bash script.
Your
for
-loop needs to start with ado
:Your
if
-statement syntax looks off. It should probably be something like this, note thethen
:if
-blocks end with:And the
for
-do
block ends with:Better still... do away with the
if
statement and use Bash'sfor
-loop construct to generate only even numbers:尝试模数运算符。在几乎所有语言中,它看起来都是这样的:
这是有效的 C 代码,但可以轻松应用于其他语言。
您可以将 mod 运算符视为放置在同一位置的除法符号,但它不返回除法结果,而是返回余数。因此,在这段代码中,如果除以二的余数为 0,则它能被二整除,因此根据定义它是偶数。
Try the modulus operator. In almost all languages, it'll look something like this:
That is valid C code, but can easily be applied to other languages.
You can think of the mod operator as a division sign placed in the same location, but rather than returning the results of the division it returns the remainder. Therefore in this code, if the remainder of a divide-by-two is 0, then it divides evenly by two, and so it's even by definition.
如果您的语言有
for(;;)
语法,您可以If your language has a
for(;;)
syntax you can您可以执行以下操作:
for x in {18..2500} {
if (x mod 2=0) {
do some;}
对于 {18..2500} 步骤 2 中的 x {
做某事;}
There are a couple things you can do:
for x in {18..2500} {
if (x mod 2=0) {
do something;}
for x in {18..2500} step 2 {
do something;}