bashで小数点を比較する方法
bashで小数点を比較する方法を紹介します。
1.問題点
以下のような小数点を比較するスクリプトを書きました。
#!/bin/sh
foo=0.2
bar=0.3
if [ $foo > $bar ]; then
echo "$foo is large."
else
echo "$bar is large."
fi
が、このスクリプトでは期待する動作にならず「0.2 is large.」と表示されます。
ということで、bashで小数点を比較する方法を紹介します。
2.bashで小数点を比較する
bashで小数点を比較するには、小数点の比較をbcコマンドを使って評価します。
#!/bin/sh
foo=0.2
bar=0.3
result=`echo "$foo > $bar" | bc`
if [ $result -eq 1 ]; then
echo "$foo is large."
else
echo "$bar is large."
fi
bcは、パイプやファイルなどで渡された式を評価してくれるコマンドです。
上記のサンプルであれば、変数fooが変数barより大きければ「1」を変数resultに代入し、あとはそれを判定すればOKです。
変数fooが変数barより小さければ「0」を変数resultに代入します。
Posted by yujiro このページの先頭に戻る
- シェルスクリプトのexpectで応答メッセージを振り分ける方法
- bashでPostgreSQLのselect結果を出力する方法
- bashでbackspaceが動作しない場合の対処
- bashの変数から最後の1文字を取得・削除する方法
- bashのwhile文で利用した変数がループ外で反映されない場合の対処
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処
- bashの正規表現でスペース(空白)を判定する方法
- bashで文字列の長さを調べる方法
- bashで数値を判定する方法
- bashで小数点を比較する方法
- bashの配列をjoinする方法
- bashのif文で正規表現を使用する方法
- Bashで変数を大文字または小文字に変換する方法
- bashの変数をsplitして配列を作る方法
- シェルスクリプトでtelnet接続する方法
トラックバックURL
コメントする
greeting