【问题标题】:Mathematical expression result assigned to a Bash variable分配给 Bash 变量的数学表达式结果
【发布时间】:2013-12-06 23:00:39
【问题描述】:

如何使用 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)

有什么想法吗?

【问题讨论】:

    标签: linux bash console-application


    【解决方案1】:

    两种选择:

    1. 使用后退抽动:

      W1=`命令`

    2. 使用括号

      W1=$(命令)

    你的命令可以和上面的一样复杂(例如,多个命令用管道连接)

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

    W1=$(command1 $(command2))
    

    【讨论】:

    • 您需要在示例中转义反引号(“W1=\`command\`”)。
    【解决方案2】:
     W3=$( echo $W1+$W2 | bc )
    

    ...你试过了吗?

    【讨论】:

    • [root@slcnpde089 admincmd]# W3=$( echo $W1+$W2 | bc ) [root@slcnpde089 admincmd]# echo &W3 [1] 14457 -bash: W3: command not found [1 ]+ 完成回声
    • 不要将其直接粘贴到控制台,键入它,将 " 添加到总和中,如下所示: W3=$( echo "$W1+$W2" | bc ) ,在我的笔记本电脑中,它可以双向工作. 我在用 Debian 和 bash。(小提示,永远不要使用 root 帐户,使用普通帐户和 sudo)
    【解决方案3】:

    如果W1W2 都是整数,这将起作用:

    (( W = W1 + W2 ))
    

    不过,您似乎正在处理浮点数,因此在这种情况下可能会出现这样的情况:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2012-03-03
      • 2010-10-02
      • 2011-01-23
      相关资源
      最近更新 更多