2つの10進数値を比較しようとしていますが、エラーが発生します。使用しました
if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ];then
他のスタックオーバーフロースレッドによって提案されたように。
エラーが発生します。
これを行う正しい方法は何ですか?
Bash の数値コンテキストを使用して実行できます。
if (( $(echo "$result1 > $result2" | bc -l) )); then
bc
は 0 または 1 を出力し、(( ))
はそれらをそれぞれ false または true として解釈します。
AWK を使用した同じこと:
if (( $(echo "$result1 $result2" | awk '{print ($1 > $2)}') )); then
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
)