Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash浮点比较和(标准_in)1:语法错误_Bash_Shell_Floating Point_Comparison_Bc - Fatal编程技术网

bash浮点比较和(标准_in)1:语法错误

bash浮点比较和(标准_in)1:语法错误,bash,shell,floating-point,comparison,bc,Bash,Shell,Floating Point,Comparison,Bc,我有一段代码,我从第三行得到(标准)1:语法错误: valueInFloat=printf "%.2g" $temp tempFloat=printf "%.1f" $value2 compare_result=`echo "$tempFloat < $valueInFloat" |bc -l` if [[ -z $compare_result ]] then ... valueInFloat=printf“%.2g”$temp tempFloat=printf“%.1f”$value2

我有一段代码,我从第三行得到
(标准)1:语法错误

valueInFloat=printf "%.2g" $temp
tempFloat=printf "%.1f" $value2
compare_result=`echo "$tempFloat < $valueInFloat" |bc -l`
if [[ -z $compare_result ]]
then ...
valueInFloat=printf“%.2g”$temp
tempFloat=printf“%.1f”$value2
比较结果=`echo“$tempFloat<$valueInFloat”| bc-l`
如果[-z$比较结果]]
然后。。。
我正在尝试在
bash
中进行浮点值比较


请注意,如果我注释掉第三行并放入
compare\u result=0
,错误就会消失。

无论是
$tempFloat
还是
$valueInFloat
都没有值。

在某些情况下,
printf
可以生成
bc
无法识别的浮点值。具体来说,类似于:

pax> printf "%.2g\n" 42456456457357357
4.2e+16
pax> echo '4.2e+16 > 1.0' | bc -l
(standard_in) 1: syntax error
我建议您坚持使用
%f
变体。它将始终生成表单
[−]999.999
符合ISO C标准,
bc
将不会有任何问题(除非您开始进入无限或NaN)。
%g
变量生成该格式或
%e
格式
[−]9.999e±99
取决于要求的值和精度

此外,您的测试是错误的。如果字符串为空,
-z
测试将为真,根据比较结果,您的字符串将为
1
0
。更好的测试是(假设测试为阳性,您希望休息:

if [[ ${compare_result} -eq 1 ]]

这只是一段脚本,这些变量中的值将通过valueInFloat=
printf“%.2g”$temp
tempFloat=
printf“%.1f”$value2
感谢您解决了这个问题…我使用了不同的格式说明符导致了这个问题。谢谢,这就是确切的解决方案。