シェルスクリプトを使用して、10進値を次の整数値に増やしたいと思います。
たとえば、
i=**1.6** then I need to print i=**2**
i=**1.00001** then I need to print i=**2**
i=**1.00049** then also I need to print the value as i=**2**
いずれにしても、10進値が0.00000001より大きい場合は、値を2として印刷する必要があります。
ベストアンサー1
あなたの質問は少しあいまいです。小数部に関係なく次の整数が必要な場合、答えは次のようになりますsh
。
echo $((${i%.*} + 1))
次の整数が必要な場合(小数部が0より大きい場合)、答えは次のようになりますsh
。
[ -n "${i##*.*[1-9]*}" ]
echo $(( ${i%.*} + $? ))
i
(最初のテストは、小数点の後にゼロ以外の数字がある場合は1で終了し、そうでない場合は0で終了します。$?
終了値を含みます。)
IMHO 同じアイデアがbash
読みやすくなります。
[[ "$i" != *.*[1-9]* ]]
echo $(( ${i%.*} + $? ))
POSIXを使用しているため、expr
すべてのシェルと互換性があります。
expr "${i%.*}" + \( "${i##*.*[1-9]*}" = "" \)