Bash脚本比较文件大小问题

时间:2012-01-08 12:31:55

标签: bash if-statement size

我正在运行OS X.

所以我在使用脚本来比较本地HD和服务器上的文件大小时遇到​​了问题。 为此,我使用cURL获取http标头,并将其修剪为KB大小。 然后我使用“stat”来获取本地文件的大小。

这是我的代码:

clear
cd "$(dirname "$0")"

Local=$(stat -f "%z" ./Google.png)
Remote=$(curl -sI http://www.google.com/intl/en_com/images/srpr/logo3w.png | grep Content-Length | awk '{print $2}')
declare -i Local
declare -i Remote
echo $Local
echo $Remote

if [ $Local != $Remote ]; then
  echo "Different sizes."
else
  echo "Same size."
fi

无论尺寸是否相等,我都会得到:

7007
7007
Different sizes.

我真的非常绝望,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

使用[ $n -eq $k ]比较数字。

答案 1 :(得分:0)

卷曲输出的行以回车符+换行符(\ r \ n)终止,而不仅仅是换行符(\ n);回车被包含在Remote的值中,并引起混淆。您可以通过管道tr -d "\r"删除它,但是让awk执行此操作可能更简单(以及搜索,就此而言):

Remote=$(curl -sI http://www.google.com/intl/en_com/images/srpr/logo3w.png | awk '/Content-Length/ {sub("\r",""); print $2}')

顺便说一句,我不认为declare -i命令正在做任何有用的事情(因为已经设置了本地和远程)。