首页 > 解决方案 > 如何在 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

标签: bashfedora

解决方案


du -h打印供人类消费的数字。脚本不应该使用-h. 尝试-k-b改为获得易于解析的整数:

-k     like --block-size=1K

-b, --bytes
       equivalent to '--apparent-size --block-size=1'

推荐阅读