我在此路径中的/var/tmp/test/dsk/file.1中有一个4GB的文件。哪一个 我们可以通过Solaris Linux命令看到如下:
-bash-4.4# du -h /var/tmp/test/dsk/file.1 4.0G /var/tmp/test/dsk/file.1
我只想要磁盘大小,所以我做了以下操作。
disk=`du -h /var/tmp/test/dsk/file.1| awk '{print $1}'|tr -d '.G'`
给出了如下输出:
-bash-4.4# echo $disk 4.0
但我想将此磁盘大小与值50进行比较,首先我需要将上面的输出转换为整数,但我没有做到 那个,任何人都可以帮忙,我已经搜索过但不是 得到确切的解决方案。
答案 0 :(得分:0)
抱歉,我不知道这里有什么可以探测:) 像bc这样的工具可以接受你提供的任何格式:
[ $(bc <<< "$disk>=50") -eq 1 ]
顺便说一句,您可能希望将人类可读的大小输出转换为简单的数字字节大小,其函数如下:
# Converts human readable sizes into integer kilobyte sizes
# Usage numericSize="$(HumanToNumeric $humanSize)"
function HumanToNumeric {
local value="${1}"
local notation
local suffix
local suffixPresent
local multiplier
notation=(K M G T P E)
for suffix in "${notation[@]}"; do
multiplier=$((multiplier+1))
if [[ "$value" == *"$suffix"* ]]; then
suffixPresent=$suffix
break;
fi
done
if [ "$suffixPresent" != "" ]; then
value=${value%$suffix*}
value=${value%.*}
# /1024 since we convert to kilobytes instead of bytes
value=$((value*(1024**multiplier/1024)))
else
value=${value%.*}
fi
echo $value
}