Bash Script Сравнение размеров файлов Проблема - PullRequest
0 голосов
/ 08 января 2012

Я использую OS X.

Итак, у меня проблемы со сценарием для сравнения размера файла на моем локальном жестком диске и на сервере. Для этого я использую cURL, чтобы получить заголовок http, и обрежу его до размера в КБ. Затем я использую "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 ]

3 голосов
/ 08 января 2012

Используйте [ $n -eq $k ] для сравнения чисел.

0 голосов
/ 08 января 2012

в выводе curl строки заканчиваются символом возврата каретки + перевод строки (\ 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 команды делают что-нибудь полезное (поскольку локальные и удаленные параметры уже заданы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...