我试图找出从两个文件中获取的两个数字之间的差异。我认为我的代码是有意义的:
我尝试用两种不同的方法让它工作,但没有成功。我得到的输出为零 (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}'
最终我将使用差异来设置电子邮件更新的间隔。
文件内的值是 511.786(新)和 509.768(旧),我从终端得到的错误如下:
line 40: 511.786-509.765: syntax error: invalid arithmetic operator (error token is ".786-509.765")
答案1
第一个示例的问题是bash
只能对整数进行操作,而您的第二次尝试awk
根本不正确。
我建议用于bc
这项工作:
bc <<< "$new-$old"
<<<
就是所谓的这里的字符串,并且它基本上是较短的形式echo "$new-$old" | bc
。
awk
如果您愿意,您还可以修改命令:
echo "$new $old" | awk '{print $1-$2}'
或(使用这里的字符串如上):
awk '{print $1-$2}' <<< "$new $old"