bcループを使用してインデックスを乗算し、派生値に配列値を乗算しようとしています。
#!/bin/bash
n=10.0
bw=(1e-3 2.5e-4 1.11e-4 6.25e-5 4.0e-5 2.78e-5 2.04e-5 1.56e-5 1.29e-5 1.23e-5 1.0e-5)
for k in {1..11};do
a=$(echo "$n * $k" | bc)
echo "A is $a"
arn=${bw[k-1]}
echo "Arn is $arn"
b=$(echo "$arn * $a" | bc -l)
echo "b is $b"
#echo $a $b
done
ループ内の新しい変数に代入して配列値をエコーすることができますが、それを乗算するために使用するbc
と(standard_in) 1: syntax error
。私は手がかりを探していくつか試しましたが、何も役に立ちませんでした。予想される出力は次のとおりです。
10 1.00E-02
20 5.00E-03
30 3.33E-03
40 2.50E-03
50 2.00E-03
60 1.67E-03
70 1.43E-03
80 1.25E-03
90 1.16E-03
100 1.23E-03
110 1.10E-03
すべての助けに感謝します。
ベストアンサー1
for
OPのループを単一のスクリプトに置き換えますawk
。
awk -v n="$n" ' # assign awk variable "n" the value of OS variable "n"
{ k++ # increment counter (initially == 0)
printf "%s %0.2E\n",(k*n),($1*k*n) # print output
}
' < <(printf "%s\n" "${bw[@]}") # print each bw[] entry on a separate line
これで以下が生成されます。
10 1.00E-02
20 5.00E-03
30 3.33E-03
40 2.50E-03
50 2.00E-03
60 1.67E-03
70 1.43E-03
80 1.25E-03
90 1.16E-03
100 1.23E-03
110 1.10E-03