精通 Bash 中变量的除法

Mastering Division of Variables in Bash

在 Bash 中编写脚本时,您会遇到的常见任务之一是对变量执行算术运算,特别是除法。这个过程可能看起来很简单,但由于 Bash 默认情况下缺乏浮点支持,因此需要仔细注意。 在本文中,我们将深入研究 Bash 中除变量的几种方法,并且您将了解如何处理 Bash 中缺乏浮点除法的情况。

使用 'expr' 命令

您可以在 Bash 中用于除法的命令之一是 expr。 此命令会评估一个表达式并将结果打印到控制台。 基本语法是

x=60 y=-3 result=$(expr $x / $y) echo "结果:$result"

在这种情况下,x 的值除以 y,结果存储在 result 变量中。 务必记住,除法运算符 / 前后的空格非常重要。 如果没有空格,则提供给 expr 命令的表达式将被评估为字符串,从而导致语法错误。

但是,expr 命令有局限性。 它仅支持整数除法,这意味着如果结果应该是浮点数,它将被截断为整数。 此外,它不能接受浮点数作为输入。

利用双括号

执行除法的另一种方法是使用双括号语法。 此语法是 Bash 中算术运算的简写方法

x=60 y=-9 result=$(($x / $y)) echo "结果:$result"

expr 命令不同,双括号语法不需要除法运算符前后有空格。 但是,它仍然只支持整数除法,并且不接受浮点数作为输入。

使用 'printf' 获取精度

printf 命令是 Bash 中另一个方便的除法工具。 它可以返回浮点数,为您提供更精确的结果

x=60 y=-9 printf "%.4f\n" $((10**4 * x/y))e-4

在此示例中,x 首先乘以 10^4,然后除以 y。 格式说明符 %.4f\n 将输出格式化为小数点后有四位数字的浮点数。 但是,请注意,分子和分母仍然必须是整数。

利用 'bc' 命令

bc (Basic Calculator) 命令是 Bash 中最通用的除法工具之一。 与以前的方法不同,它允许使用浮点数作为输入

x=10.5 y=-2 echo "scale=4; $x / $y" | bc

在这里,scale=4 指定结果中小数点后的位数。 此外,您可以通过使用 shell 管道 | 将 shell 变量与 bc 命令一起使用。

结论

除法是 Bash 脚本中的基本操作。 通过利用 expr 命令、双括号语法、printfbc 命令,您可以有效地在 Bash 中除两个变量。 请记住,根据您是否需要整数或浮点除法,以及您的变量是整数还是浮点数,来选择正确的工具。

George Whittaker 是 Linux Journal 的编辑,也是一名定期撰稿人。 George 撰写技术文章已有二十年,并且已成为 Linux 用户超过 15 年。 在空闲时间,他喜欢编程、阅读和玩游戏。

加载 Disqus 评论