2016-11-21 6 views
0

これは私がやっていることの一例です。基本的には、MySQLのバージョンに応じてifステートメントでコードを実行するスクリプトがあります。テストするために私はこれを持っています。私はbashが浮動小数点をしないので、私はawkを使うつもりだったのを知っています。誰でもこの仕事をするのに役立つことができますか? AWKは、bashと異なるリターンコードで山車を比較するためにawkを使ったbashのフロート

var=5.5 
mysqlV=5.6 

a=`echo $var'>'$mysqlV | bc -l` 

echo $a 
> 0 

var=5.8 
a=`echo $var'>'$mysqlV | bc -l` 

echo $a 
> 1 
+0

バージョン番号は、一般的な、浮動小数点値では、ありません。それらはピリオドで結合された複数の整数です(例:5.6.1)。 – chepner

+0

私は 'MYSQL_VER = $(mysql -V | awk '{print $ 5}' | cut -d '、' -f1 | cut -c-3)'を切り捨てる変数を持っていると知っています。 – eekfonky

答えて

1

var="5.5" 
mysqlV="5.6" 

if awk -v var="$var" -v mysqlV="$mysqlV" 'BEGIN{if (var>mysqlV) exit 0; else exit 1}'; then 
    echo "larger" 
else 
    echo "smaller" 
fi 

出力:

smaller 

短いバージョン:

if awk -v var="$var" -v mysqlV="$mysqlV" 'BEGIN{exit(var>mysqlV)?0:1}'; then 
4

:代わりにawkを使用すると、次のようにbashの計算(bc)を使用することができます使用しての

#!/bin/bash 

var=5.5 
mysqlV=5.6 

if awk '{print $var > $mysqlV}'; then 
result=1 
else 
result=0 
echo $result 
fi 
関連する問題