【问题标题】:How to loop through a range of decimal numbers in bash?如何在bash中循环一系列十进制数字?
【发布时间】:2015-08-26 10:21:32
【问题描述】:

我想生成一系列等距十进制数。

例如,我想echo3.04.5 之间的所有数字,步骤为0.1。我试过$ for i {3.0..4.5..0.1}; do echo $i; done,但这给出了一个错误。

我也尝试了$ for i in $(seq 3.0 4.5 0.1); do echo $i; done,但没有任何反应。

【问题讨论】:

  • Bash 不做浮点数。你最好切换到不同的脚本语言。
  • 是否有替换seq 的命令可以生成该列表以便我使用它?

标签: linux bash for-loop seq


【解决方案1】:

我也试过 $ for i in $(seq 3.0 4.5 0.1);回声 $i;完成但没有任何反应。

顺序错误:

$ for i in $(seq 3.0 0.1 4.5); do echo $i; done

【讨论】:

  • 哇,谢谢,效果很好。比其他方法更容易阅读。
【解决方案2】:

如果您正在寻找一个以 0.1 步从 3.5 到 4.5 的循环,这将起作用

for x in {35..45}; do
     y=`bc <<< "scale=1; $x/10"`
     echo $y
done

0.01 步也一样

for x in {350..450}; do
         y=`bc <<< "scale=2; $x/100"`
         echo $y
done

【讨论】:

  • 谢谢,这行得通。 bc是分部的必修课吗?
  • 刚刚google了一下,现在我用的是for x in {30..45}; do y=$(dc &lt;&lt;&lt; "1k $x 10/p"); echo $y; done
  • 是的,任何一个都有效。 bash 只支持整数运算。因此,总是需要使用另一个程序...
【解决方案3】:
 for i in {3.0,4.5,0.1}; do echo $i; done

【讨论】:

  • 不,只打印三行 3.0、4.5 和 0.1。
  • 你要打印什么??
  • 十进制数字范围,例如3.0 3.1 3.2 3.3 ... 4.5
  • @izxle - 最初的问题很容易产生误解。此处显示的语法对于它的用途很有用。
  • 这个语法是什么意思,然而,与“循环[ing] through a range of decimal numbers”没有合理的关系。
猜你喜欢
  • 2013-07-19
  • 1970-01-01
  • 2016-09-17
  • 2017-03-22
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
相关资源
最近更新 更多