我制作了一个 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/