我对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脚本的新手,有人可以帮我解决这个问题。
答案 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