我创建了一个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}"
Run Code Online (Sandbox Code Playgroud)
但是脚本的输出才是
-
Run Code Online (Sandbox Code Playgroud)
如何减法工作?
Dan*_*eck 13
您可以通过将表达式包装在$((和中来执行bash中的基本整数数学运算)).
$ echo $(( 5 + 8 ))
13
Run Code Online (Sandbox Code Playgroud)
在您的具体情况下,以下内容适用于我:
$ echo "${new_size}-${current_size}"
802-789
$ echo $(( ${new_size}-${current_size} ))
13
Run Code Online (Sandbox Code Playgroud)
你最后的输出有点奇怪.检查grep表达式是否实际产生了所需的输出.如果没有,您可能需要将正则表达式包装在引号中.