我尝试使用以下方式将 23.45 MB 的变量值转换为字节,但比较失败。我通过附加 0 并删除 MB 和空格来转换值。
操作系统:Linux
语言:Bash
fileSize=23.45 MB (file size in MB)
existingFileSize=23457676 (file size in bytes)
content=$(curl -L ${url})
fileSize=`echo "${content}" | grep -o -P '(?<=fileSize">).*(?='${myFile}')' | head -c8`
fileSize=`echo ${fileSize}0000 | sed -e 's/./''/g' | sed -e 's/MB /''/g'`
if [ "${fileSize}" != "${existingFileSize}" ]; then
echo -e "\tFile size is different than local file size\n"
else
echo -e "\tFile size is same as local file size\n"
fi
echo ${fileSize}
echo ${existingFileSize}
那么将文件大小 MB 转换为字节然后与现有文件大小进行比较的最佳方法是什么?我用谷歌搜索,但它有从字节到 MB 的大部分答案。我如何使用 Bash 执行此操作?
最佳答案
您的代码中的问题是 $fileSize
变成了 23450000
,它不等于 23457676
。如果您只关心比较的整数兆字节数,您可以使用:
croppedFileSize=${fileSize%.*}
existingMB=$(($existingFileSize/1000000))
if [ $croppedFileSize -ne $existingMB ]; then
echo -e "\tFile size is different than local file size\n"
else
echo -e "\tFile size is same as local file size\n"
fi
在您的示例中,croppedFileSize
和 existingMB
都是 23
,因此它打印出 File size is same as local file size
消息。 Bash 不处理 float ,因此使用整数使事情变得简单。
关于linux - 将文件大小从 MB 转换为字节并使用 Bash 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39647255/