Условное заявление Bash не работает под Cygwin - PullRequest
1 голос
/ 09 июля 2011

У меня есть правило Makefile, которое генерирует хеш MD5 для файла, сравнивает его с сохраненным хешем предыдущего запуска и, если оно отличается, обновляет сохраненный хеш.(У меня есть некоторые файлы, сгенерированные из базы данных, поэтому их временные метки всегда новые, и без хеша MD5 я бы не знал, действительно ли они изменились.)$(MD5) здесь - это инструмент md5, который md5 на Mac и md5deep на Cygwin.)

По некоторым причинам это прекрасно работает в bash под Mac OS X, ноне работает под Cygwin.Т.е. он выполняется, но условное всегда оценивается как true, поэтому он всегда обновляет хеш.Я добавил echo $$CURR $$PREV и вижу, что хэши выглядят одинаково, но тем не менее он всегда обновляет хеш-файл.

Что мне не хватает?

1 Ответ

2 голосов
/ 09 июля 2011

echo "'$$CURR' '$$PREV'" и проверьте пробел. Я предполагаю, что вы найдете разницу при использовании одинарных кавычек (окружающие двойные кавычки необходимы для интерполяции переменных).

если это так, один из способов исправить это - убедиться, что PREV всегда содержит что-то, скажем, с помощью else echo X, а затем убрать двойные кавычки: if [ $$CURR != $$PREV ];

...