我们说我有一个这样的变量:
list='1
1
1.4
1
1
1'
现在我想将每行的值添加到之前的行中的值。像这样:
result='1
2
3.4
4.4
5.4'
它也必须使用浮点数,所以我猜awk是最好的工具。
我正在说一个循环:
while read line; do
add=$( awk 'BEGIN{ print "'"$x"'" + "'"$line"'" }' )
done <<< "$list"
但是这不起作用,因为我以前不知道如何从线上保存价值。
答案 0 :(得分:0)
我不知道是否使用zsh
(具有浮点支持)是一种选择,但如果是,则可以这样做:
s=0;for i in $list; do s=$(($s+$i)); echo $s; done
答案 1 :(得分:0)
以下是使用bc
:
#!/bin/bash
list='1
1
1.4
1
1
1'
results=( )
total="0.0"
index=0
for line in $list; do
total=$(bc -l <<< "$line + $total")
echo $total
results[$index]=$total
let index++
done
echo ${results[@]}
此外:
total="0.0"; while read v; do total=$(bc -l <<< "$v + $total"); echo $total; done <<< "$list"
答案 2 :(得分:0)
这将是我的bash
摘要:
prev=0
for val in $list; do
val=$(echo "$val + $prev"|bc)
prev=$val
result="${result}${val}\n"
done
echo -e "$result"
答案 3 :(得分:0)
使用awk你可以这样做:
awk 'NR==1{print; s=$1; next} {s+=$1; print s}' file
1
2
3.4
4.4
5.4
6.4