値を0と比較したいのですが、0より小さいことがわかります。
solution=`echo $a / $b | bc -l`
この問題は、「a」が「b」より小さい場合にのみ発生します。
bc
は、先行ゼロを出力しません。出力をパイピングすることで印刷できます
awk '{printf "%0.2f", $1}'
要約する:
solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", $1}')
echo $solution
a=1
b=3
printf -v solution "%.2f" $(bc -l <<< "$a / $b")
echo $solution
出力:
0.33
$ aと$ bが常に整数であり、2つの整数を分割するbashのみのソリューションを探している場合: this に興味があるかもしれません。
printf
の場合:
$ printf '%f' $(echo $a / $b | bc -l)
0.200000
小数点以下1桁のみが必要な場合:
$ printf '%.1f' $(echo $a / $b | bc -l)
0.2
Perl
を使用して先行ゼロを取得することもできます。
$ echo 1 / 3 | bc -l | Perl -ne 'printf"%0.2f\n",$_'
0.33
または、Perlのみを使用できます。
$ export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});'
0.33
そしてあなたのスクリプトのために:
solution=$(export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});')
echo "$solution"