kshで2つの浮動小数点値を比較するには?

kshで2つの浮動小数点値を比較するには?

浮動小数点値を比較する次のコマンドは bash ではうまく機能しますが、AIX の ksh では機能しません。

if (( $(bc <<< " 5.3 >= 5.3") ));then echo "hi";else echo "bye";fi`,

私はいくつかの方法を試しましたが、誰でもこれを達成する方法を提案できますか?

ベストアンサー1

~によるとBCのPOSIX規格:

他のすべての演算子とは異なり、関係演算子 ("<", ">", "<=", "">=", "==", "!=") は if、while、または for ステートメントでのみ使用されます。 。

これは、単純な比較でtrueまたはfalseを評価できるGNU / Linux拡張のようです。

bc の出力が 1 か 0 かを確認する代わりに、test以下を使用してください。

if [ 5.3 -ge 5.3 ]; then echo hi; else echo bye; fi

または算術拡張(ksh93)を使用してください。

if (( 5.3 >= 5.3 )); then echo hi; else echo bye; fi

またはawkを使用してください:

if awk -v x=5.3 -v y=5.3 'BEGIN { exit (x >= y) ? 0 : 1 }'; then echo hi; else echo bye; fi

おすすめ記事