重定向输出时出现Shell Scripting错误

时间:2011-08-09 18:28:13

标签: unix shell

我对shell Scripting有一点疑问

我有一个程序(a.out),我运行了几次,它在终端上打印了一个特定的值。我需要编写一个shell脚本来捕获该程序的输出并添加输出。

我写了以下脚本

value=0
total=0
for((i=0;i<10;j++)) 
do   
 value=`./a.out $i`
 total=`expr $total + $value`
done
echo value is $value total is $total

在这里,我运行a.out,其参数为i值。当我运行此脚本时,我收到错误expr: non-integer argument

这里的问题是价值变量。我的a.out给出了一个double作为输出,我需要在变量中捕获这个数字。

我是shell脚本的新手,有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

大多数shell不能进行浮点运算,但你可以调用bc

add () { printf "%s + %s\n" $1 $2 | bc -l; }
total=0.0
for ((i=0; i<10; i++)); do
  total=$(add $total $(./a.out $i))
done

答案 1 :(得分:0)

以下是一些用于处理浮点数学的bash函数:http://www.linuxjournal.com/content/floating-point-math-bash

看一下这个例子,就像:

$tmp_total = $(float_eval "$value + $total")
$total = $tmp_total