i
for i in {0..10..5}
たとえば、浮動小数点計算などのループでインデックス付けを使用する必要があります。 iを浮動小数点数に変換する最も簡単な方法は何ですか?
変化
i=$(bc -l <<< "scale=7;$i")
動作しません。
ベストアンサー1
bc
浮動小数点をサポートするか、awk
またはシェルを使用します(たとえばksh93
、zsh
またはyash
代わりに)bash
。
紀元前
$ bc -l << \EOF
heredoc> for (i = 0; i <= 10; i += 2.5) i / 2
heredoc> EOF
0
1.25000000000000000000
2.50000000000000000000
3.75000000000000000000
5.00000000000000000000
アッ
$ awk 'BEGIN {for (i = 0; i <= 10; i += 2.5) print i / 2}'
0
1.25
2.5
3.75
5
扱いにくい
$ float i; for ((i = 0; i <= 10; i += 2.5)) print $((i/2))
0.
1.25
2.5
3.75
5.
クッシュ 93
$ for ((i = 0; i <= 10; i += 2.5)); do print "$((i/2))"; done
0
1.25
2
3.75
5
(小数点区切り文字はロケール(.
または,
)によって異なります。
ヤッシュ
i=0; while [ "$((i <= 10))" -ne 0 ]; do
echo "$((i / 2))"
i=$((i + 2.5))
done
(内部的には$((...))
小数点区切りとして使用されますが、I/O では.
ロケールの 1(.
または)が使用されます。),
編集する
いくつかの整数を繰り返し、その整数が小数点で表される場合は、次のように追加します.0
。
for i in {0..10..5}.0
または、上記の回避策の場合は、/代わりにprintf "%.7f\n"
/print
を使用してecho
小数点区切りの後に7桁を出力します。