数学表达式结果分配给Bash变量

时间:2013-11-22 06:32:07

标签: linux bash console-application

如何使用bash将数学表达式的计算结果保存到变量中?我的代码如下:

W1=$(bpimagelist -U -d 11/01/2013 00:00:00 -e 11/05/2013 00:00:00 -pt FlashBackup-Windows | tail -n +3 | awk '{s+=$5} END {print s/1024/1024/1024}')    
W2=$(bpimagelist -U -d 11/01/2013 00:00:00 -e 11/05/2013 00:00:00 -pt MS-Windows | tail -n +3 | awk '{s+=$5} END {print s/1024/1024/1024}')

echo "$W1+$W2" | bc | awk '{printf "%.02f\n", $1}' 
  
    

控制台输出:96.86

  

我正在寻找类似的代码:

W="$W1+$W2" | bc | awk '{printf "%.02f\n", $1}'  (not correct syntax though)

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

 W3=$( echo $W1+$W2 | bc )

...你试过这个吗?

答案 1 :(得分:0)

两个选项:

  1. 使用back tics:

    W1 =`command`

  2. 使用parens

    W1 = $(命令)

  3. 您的命令可能与上面的命令一样复杂(例如,多个命令与管道连接)

    选项2允许嵌套命令,例如

    W1=$(command1 $(command2))
    

答案 2 :(得分:0)

如果W1W2都是整数,那么这将有效:

(( W = W1 + W2 ))

看起来你可能正在处理浮点数,所以这样的事情可能适用于这种情况:

W="$(bc <<< "${W1} + ${W2}")"