両方のファイルからインポートされた2つの数字の違いを見つけようとします。私のコードは意味があると思います。
私は成功せずに動作するように2つの異なる方法を試しました。私が得る出力は0です。
#method 1
difference_btwn_eng_hrs_MX3_122=$(($(sed -n '1p' engine_hours_new_MX3_122.txt)-$(sed -n '1p' engine_hours_old_MX3_122.txt)))
echo "$difference_btwn_eng_hrs_MX3_122"
#method 2
new=$(sed -n '1p' engine_hours_new_MX3_122.txt)
old=$(sed -n '1p' engine_hours_old_MX3_122.txt)
echo "$new $old" | awk '{print $new - $old}'
結局のところ、diffを使って電子メールの更新間隔を設定します。
ファイルの内部値は511.786(新規)、509.768(既存)で、端末からのエラーは次のとおりです。
line 40: 511.786-509.765: syntax error: invalid arithmetic operator (error token is ".786-509.765")
答え1
最初の例の問題はbash
整数でのみ機能し、2番目の試みawk
はまったく正確ではないことです。
bc
この職業に推奨するもの:
bc <<< "$new-$old"
<<<
それはまさにいわゆるここにある文字列で、基本的に短い形式ですecho "$new-$old" | bc
。
awk
必要に応じてコマンドを変更することもできます。
echo "$new $old" | awk '{print $1-$2}'
または(使用ここにある文字列上記のように):
awk '{print $1-$2}' <<< "$new $old"