2015-06-10 42 views
4

我想生成一系列等間隔十進制數字。如何遍歷bash中的十進制數範圍?

例如,我想echo所有數字在3.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但沒有任何反應。

+0

猛砸沒有做浮點數。你最好換用不同的腳本語言。 –

+0

是否有一個命令來替換可以生成該列表的'seq',以便我可以使用它? – izxle

回答

4

我也試過$ for i in $(seq 3.0 4.5 0.1);做echo $ i;完成但沒有任何反應。

的順序是錯誤的:

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

哇,謝謝這工作很好。比其他方法更容易閱讀。 – izxle

0
for i in {3.0,4.5,0.1}; do echo $i; done 
+0

不,只打印三行3.0,4.5和0.1。 – izxle

+0

你想打印什麼? – bmscomp

+0

一系列十進制數字,例如'3.0 3.1 3.2 3.3 ... 4.5' – izxle

4

如果你正在尋找從3.5〜4.5 0.1步驟的循環,這將工作

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 
+0

謝謝,這個工程。這個部門是否爲'bc'強制? – izxle

+0

只是使用它,現在我在{30..45}中使用'for x; do y = $(dc <<<「1k $ x 10/p」); echo $ y; done'。 – izxle

+0

是的,無論是工作。 bash只支持整數運算。因此,總是需要使用另一個程序... – drpetermolnar