bash - 在 shell 脚本中减去字符串(即数字)

标签 bash shell math

我制作了一个 shell 脚本来查找目录的大小,并以人类可读的格式(例如 802M 或 702K)返回它。我想计算尺寸之间的差异。

到目前为止,这是我的 shell 脚本:

#!/bin/bash

current_remote_dir_size=789M
new_remote_dir_size=802M
new_size=`echo ${new_remote_dir_size} | grep -o [0-9]*`
current_size=`echo ${current_remote_dir_size} | grep -o [0-9]*`

echo "${new_size}-${current_size}"

但是脚本的输出只是

-

我怎样才能使减法起作用?

最佳答案

通过将表达式包装在 $(( and )) 中,您可以在 bash 中进行基本的整数数学运算。

$ echo $(( 5 + 8 ))
13

在您的具体情况下,以下对我有用:

$ echo "${new_size}-${current_size}"
802-789
$ echo $(( ${new_size}-${current_size} ))
13

你最后的输出有点奇怪。检查 grep 表达式是否实际产生了所需的输出。如果不是,您可能需要将正则表达式用引号引起来。

关于bash - 在 shell 脚本中减去字符串(即数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875151/

相关文章:

bash - 在 Ubuntu 14.04、Unity 上的 Bash 中,如何获取打开窗口的总大小(包括边框和标题)?

BASH:基本 if then 和变量赋值

regex - bash:除了单引号中的内容之外,我如何对所有内容进行子字符串化?

c - 进程不写入文件?

python - 如何在命令行中判断文件是否为字符串以及是否存在

mysql - shell脚本中使用的mysql语句语法错误

math - 纹理投影+透视校正,数学正确

c - 使用 strncpy 的 C 语言简单计算器

bash - 使用 bash 命令作为参数启动 msys mingw32 shell

javascript - 将 Canvas 图像移动到圆形路径上