这是我的剧本:
#!/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")
我知道这不行,但我听说有办法做类似的事,有什么建议吗?
答案 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