编写一个带有从0.5开始的for循环的脚本

时间:2014-10-24 18:17:41

标签: bash

这是我的剧本:

#!/bin/bash
        for ((i=0.5; i<=2.0; i+= 0.05)); do
            (   ./myExe -l t2000.bin i
            ) &
        done
        wait

,错误是:

((: i=0.5: syntax error: invalid arithmetic operator (error token is ".5")

我知道这不行,但我听说有办法做类似的事,有什么建议吗?

3 个答案:

答案 0 :(得分:7)

你只能(轻松)循环整数;在调用bc时使用myExe缩减为正确的浮点值。

for ((i=50; i <= 200; i+=5)); do
    ./myExe -l t2000.bin $(bc <<< "scale=2; $i/100") &
done
wait

请注意,bash根本不适用于浮点值。这里,bc命令的输出只是一个字符串,bash没有处理,但只是作为参数传递给命令。

答案 1 :(得分:4)

不使用bc:

for ((i = 50; i <= 200; i+=5)); do
  f=$((i/100)).$((i%100))
  echo $f
done

答案 2 :(得分:3)

for i in 0.{5..9}{,5} 1.{0..9}{,5} 2.0; do echo $i; done

或:

for i in $(seq 0.5 0.05 2); do echo $i; done