当前位置:  开发笔记 > 编程语言 > 正文

如何在bash中生成步骤n的范围?(生成一系列增量的数字)

如何解决《如何在bash中生成步骤n的范围?(生成一系列增量的数字)》经验,为你挑选了4个好方法。

在bash中迭代范围的方法是

for i in {0..10}; do echo $i; done

使用步骤迭代序列的语法是什么?说,我想在上面的例子中得到偶数.



1> chaos..:

我会做

for i in `seq 0 2 10`; do echo $i; done

(虽然当然seq 0 2 10会自己产生相同的输出).

请注意,seq允许浮点数(例如seq .5 .25 3.5),但bash的大括号扩展只允许整数.


我会冒险猜测downvote是由于你的答案是'sh'的通用,而不是'bash'特有的.纯粹的Bash方法{开始结束步骤}执行得更好.较旧的'seq'方法在较旧或较小内存系统(如busybox)上很方便.我做了你和TheBonsai的回答.:)
最好在反引号中使用$(...)。反引号不会嵌套。

2> TheBonsai..:

Bash 4的支撑扩展有一个步骤特征:

for {0..10..2}; do
  ..
done

无论是Bash 2/3(C-style for loop,见上面的答案)还是Bash 4,我都更喜欢'seq'命令.


这应该是答案.
这些论点可能会或可能不会对你有用:*有足够的系统没有GNU coreutils(但安装了Bash)*你创建了一个不需要的外部进程*你依赖于所有'seq'做你'seq'所做的事情的想法*它是没有标准化的ISO
@becko如果步骤存储在变量“ i”中,那么对于{0..10 .. $ {i}}`..您将无法执行它。
Bash4仍然不是主流,没有.为什么不seq?好吧,让我们用IRC频道#bash中的机器人的话来说:"seq(1)是一个高度非标准的外部命令,用于在愚蠢的Linux howtos中数到10."

3> Fritz G. Meh..:

纯粹的Bash,没有额外的过程:

for (( COUNTER=0; COUNTER<=10; COUNTER+=2 )); do
    echo $COUNTER
done


+1因为步骤也可以由变量替换.

4> z -..:
#!/bin/bash
for i in $(seq 1 2 10)
do
   echo "skip by 2 value $i"
done


FWIW seq在我的标准OS X Mavericks 10.9.1中可用
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有