從方程式輸出建立數組

從方程式輸出建立數組

例如,我想將 1 到 5 的所有整數除以 8 並將它們放入數組中。我在想類似於下面的程式碼的東西,但我確信它是錯誤的並且骯髒的:

 COUNTER=0
 until [  $COUNTER -lt 8 ]; do
        ${steps[$COUNTER]}=1+(5-1)/8*$COUNTER
        let COUNTER+=1
 done

如果我的程式碼完全正確,是否有辦法乾淨地完成此操作?

答案1

seq指令可以增加一個浮點數:

declare -a steps=($(seq 1 .5 5))

您可以透過以下方式獲得增量echo 'scale=1;(5-1)/8'|bc

答案2

是的,但由於 bash 不執行浮點運算,因此您需要使用另一個工具並將其輸出保存在 bash 陣列中。例如:

$ perl -le 'print $_/8 for 1..5' 
0.125
0.25
0.375
0.5
0.625

保存在數組中:

array=( $(perl -le 'print $_/8 for 1..5') )

答案3

bash只能進行整數運算。用於bc浮標:

from=1
to=5
steps=8
for c in $(seq 0 $steps) ; do
    ar[c]=$(echo $(bc -l <<< "$from + ($to - $from) / $steps * $c"))
done
echo "${ar[@]}"

相關內容