27

2つの10進数値を比較しようとしていますが、エラーが発生します。使用しました

if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ];then

他のスタックオーバーフロースレッドによって提案されたように。

エラーが発生します。

これを行う正しい方法は何ですか?

4

8 に答える 8

43

Bash の数値コンテキストを使用して実行できます。

if (( $(echo "$result1 > $result2" | bc -l) )); then

bcは 0 または 1 を出力し、(( ))はそれらをそれぞれ false または true として解釈します。

AWK を使用した同じこと:

if (( $(echo "$result1 $result2" | awk '{print ($1 > $2)}') )); then
于 2012-06-28T04:50:03.733 に答える
-1

echoへのif...elseステートメントもできますbc

- echo $result1 '>' $result2
+ echo "if (${result1} > ${result2}) 1 else 0"

(
#export IFS=2  # example why quoting is important
result1="2.3" 
result2="1.7" 
if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ]; then echo yes; else echo no;fi
if [ "$(echo "if (${result1} > ${result2}) 1 else 0" | bc -l)" -eq 1 ];then echo yes; else echo no; fi
if echo $result1 $result2 | awk '{exit !( $1 > $2)}'; then echo yes; else echo no; fi
)
于 2013-03-18T11:23:36.753 に答える