如何在bash脚本中添加数字

如何在bash脚本中添加数字

我有这个bash脚本,我在第16行遇到了问题。如何获取第15行的先前结果并将其添加到第16行的变量中?

#!/bin/bashnum=0metab=0for ((i=1; i<=2; i++)); do      
    for j in `ls output-$i-*`; do
        echo "$j"

        metab=$(cat $j|grep EndBuffer|awk '{sum+=$2} END { print sum/120}') (line15)
        num= $num + $metab   (line16)
    done
    echo "$num"
 done


慕无忌1623718
浏览 846回答 3
3回答

天涯尽头无女友

对于整数:使用算术扩展:$((EXPR))num=$((num1&nbsp;+&nbsp;num2))num=$(($num1&nbsp;+&nbsp;$num2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;also&nbsp;worksnum=$((num1&nbsp;+&nbsp;2&nbsp;+&nbsp;3))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;...num=$[num1+num2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;old,&nbsp;deprecated&nbsp;arithmetic&nbsp;expression&nbsp;syntax使用外部expr实用程序。请注意,这仅适用于真正的旧系统。num=`expr&nbsp;$num1&nbsp;+&nbsp;$num2`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;whitespace&nbsp;for&nbsp;expr&nbsp;is&nbsp;important对于浮点数:Bash并不直接支持这一点,但您可以使用几种外部工具:num=$(awk&nbsp;"BEGIN&nbsp;{print&nbsp;$num1+$num2;&nbsp;exit}")num=$(python&nbsp;-c&nbsp;"print&nbsp;$num1+$num2")num=$(perl&nbsp;-e&nbsp;"print&nbsp;$num1+$num2")num=$(echo&nbsp;$num1&nbsp;+&nbsp;$num2&nbsp;|&nbsp;bc)&nbsp;&nbsp;&nbsp;#&nbsp;whitespace&nbsp;for&nbsp;echo&nbsp;is&nbsp;important你也可以用科学记数法(如:2.5e+2)常见的陷阱:设置变量时,不能在任何一侧都有空格=,否则会强制shell将第一个单词解释为要运行的应用程序的名称(例如:num=或num)bc并expr期望每个数字和运算符作为一个单独的参数,因此空格很重要。他们无法处理像这样的论点3+&nbsp;+4。

烙印99

有一千零一种方法可以做到这一点。这是一个使用dc:dc&nbsp;<<<"$num1&nbsp;$num2&nbsp;+&nbsp;p"但是,如果这对你来说太过苛刻(或可移植性问题)你可以说echo&nbsp;$num1&nbsp;$num2&nbsp;+&nbsp;p&nbsp;|&nbsp;dc但也许你是那些认为RPN狡猾而怪异的人之一;&nbsp;别担心!bc在这里为您服务:bc&nbsp;<<<&nbsp;"$num1&nbsp;+&nbsp;$num2"echo&nbsp;$num1&nbsp;+&nbsp;$num2&nbsp;|&nbsp;bc也就是说,您可以对脚本进行一些无关的改进#!/bin/bashnum=0metab=0for&nbsp;((i=1;&nbsp;i<=2;&nbsp;i++));&nbsp;do &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;j&nbsp;in&nbsp;output-$i-*&nbsp;;&nbsp;do&nbsp;#&nbsp;for&nbsp;can&nbsp;glob&nbsp;directly,&nbsp;no&nbsp;need&nbsp;to&nbsp;ls &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"$j" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;grep&nbsp;can&nbsp;read&nbsp;files,&nbsp;no&nbsp;need&nbsp;to&nbsp;use&nbsp;cat &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metab=$(grep&nbsp;EndBuffer&nbsp;"$j"&nbsp;|&nbsp;awk&nbsp;'{sum+=$2}&nbsp;END&nbsp;{&nbsp;print&nbsp;sum/120}') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num=$((&nbsp;$num&nbsp;+&nbsp;$metab&nbsp;)) &nbsp;&nbsp;&nbsp;&nbsp;done &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"$num"done编辑:如BASH FAQ 022中所述,bash本身不支持浮点数。如果需要对浮点数求和,则需要使用外部工具(如bc或dc)。在这种情况下,解决方案将是num=$(dc&nbsp;<<<"$num&nbsp;$metab&nbsp;+&nbsp;p")添加累积可能的浮点数num。
打开App,查看更多内容
随时随地看视频慕课网APP