bash - 如何在 Bash 中将字符串转换为整数?
问题描述
我正在尝试创建一个 cronjob,它将根据特定文件夹的磁盘使用情况的输出运行。在我的测试环境中,我有一个名为“Test”的文件夹,大小为 4.0 KB。我正在查询它的大小:
du -csh /home/<username>/Test | grep total | cut -f1 | tr -d 'K'
输出分配给一个名为 DISK_SPACE 的变量,并留给我4.0
. 我无法弄清楚如何将 4.0 转换为整数以满足以下要求:
if [ $DISK_SPACE -gt 3.0 ]
then
rm -rf /home/<username>/Test/*.*
else
echo $DISK_SPACE "is less than 3.0K and as a result the contents of the folder will NOT be deleted."
我的完整 bash 文件如下所示:
#!/bin/bash
DISK_SPACE=$(du -csh /home/<username>/Test | grep total | cut -f1 | tr -d 'K')
echo $DISK_SPACE
if [ $DISK_SPACE -gt 3.0 ]
then
rm -rf /home/<username>Test/*.*
else
echo $DISK_SPACE "is less than 3.0K and as a result the contents of the folder will NOT be deleted."
fi
运行后我收到的错误是:
4.0: integer expression expected
解决方案
du -h
打印供人类消费的数字。脚本不应该使用-h
. 尝试-k
或-b
改为获得易于解析的整数:
-k like --block-size=1K
-b, --bytes
equivalent to '--apparent-size --block-size=1'
推荐阅读
- javascript - (刮)处理具有不同标识符/编号的产品
- java - SQL Server CLOB 数据到 String Java + Angular
- android-gradle-plugin - 为什么没有 InstantAppVariants 这样的东西?我如何循环。即时应用程序 gradle 文件中的变体?
- wordpress - Wordpress 无法访问登录页面
- javascript - 获取带有或不带有 URL 斜杠的目录?
- javascript - 在 React Native 中禁用“保存密码”对话框
- javascript - 全选复选框 Angular material 5 | 如果选择个人,Gmail 样式也会选择
- docker - docker centos 容器中的詹金斯
- android-ndk - 为什么我的原生库没有复制到 apk 中?
- rxjs - 如何在数据更改时突出显示一列 500 毫秒。需要根据上一个值是增加还是减少来突出显示它的绿色/红色