【问题标题】:Divide two variables in bash在bash中划分两个变量
【发布时间】:2015-05-22 13:29:35
【问题描述】:

我试图在 bash 中划分两个 var,这就是我得到的:

var1=3;
var2=4;

echo ($var1/$var2)

我总是遇到语法错误。 有谁知道怎么回事?

【问题讨论】:

标签: bash variables divide


【解决方案1】:

shell 解析只对整数除法有用:

var1=8
var2=4
echo $((var1 / var2))

输出: 2

而不是你的例子:

var1=3
var2=4
echo $((var1 / var2))

输出: 0

最好使用 bc:

echo "scale=2 ; $var1 / $var2" | bc

输出: .75

scale 是所需的精度

【讨论】:

  • bc的输出应该是字符串还是浮点数?
  • @Sigur 输出总是一个字符串
  • 是否可以将其转换为float或int?
【解决方案2】:

如果你想不使用 bc,你可以使用 awk:

$ awk -v var1=3 -v var2=4 'BEGIN { print  ( var1 / var2 ) }'
0.75

【讨论】:

  • 什么是“没有 bc”?
【解决方案3】:

这里有两个可能的答案。

要进行整数除法,可以使用shell:

$ echo $(( var1 / var2 ))
0

$(( ... )) 语法被称为算术扩展

浮点除法需要使用其他工具,如bc

$ bc <<<"scale=2; $var1 / $var2"
.75

scale=2 语句将输出的精度设置为 2 位小数。

【讨论】:

  • P.S.在我的 .zshrc 中,我有 calc () { echo "scale=2;$*" | bc | sed 's/\.0*$//'} 进行计算。后者sed 是删除尾随零,例如100/10 我们得到 10 而不是 10.00...
【解决方案4】:
#!/bin/bash
var1=10
var2=5
echo $((var1/var2))

【讨论】:

  • 如果你能解释错误是什么就好了。
【解决方案5】:

您也可以使用 Python 来完成此任务。
输入python -c "print( $var1 / float($var2) )"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-30
    • 2015-05-03
    • 2012-01-13
    • 2022-11-22
    • 2017-03-01
    • 2017-12-29
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多