написал скрипт для перезагрузки конфига NGINX при изменении
#!/bin/bash
RELOAD="/etc/init.d/nginx reload"
OLDFILE="/etc/nginx/sites-available/default.old"
NEWFILE="/etc/nginx/sites-available/default"
oldsize=$(stat -c %s $OLDFILE)
newsize=$(stat -c %s $NEWFILE)
if [ "$oldsize" != "$newsize" ];
then
cp $NEWFILE $OLDFILE 2> /dev/null
$RELOAD
fiОШИБКИ
stat: cannot stat `/etc/nginx/sites-available/default.old\r': No such file or directory
stat: cannot stat `/etc/nginx/sites-available/default\r': No such file or directory
/var/www/nginx-default/1.sh: line 11: syntax error near unexpected token `fi'
/var/www/nginx-default/1.sh: line 11: `fi'Подскажите где ошибся?
#!/bin/bash
OLDFILE="/etc/nginx/sites-available/default.old"
NEWFILE="/etc/nginx/sites-available/default"/usr/bin/diff -q $OLDFILE $NEWFILE > /dev/null
if [ $? -ne 0 ];then
/etc/init.d/nginx reload
fi
+1 - размер файла может не измениться при правке.
> /usr/bin/diff -q $OLDFILE $NEWFILE > /dev/null
> if [ $? -ne 0 ];thenif [ $NEWFILE -nt $OLDFILE ];
> if [ $NEWFILE -nt $OLDFILE ];Ну, более новый, тоже можно. Но он может быть сколько угодно новым, но идентичным по содержанию, отсюда я и применил diff - а это уже 100% что результат будет однозначный.
> Ну, более новый, тоже можно. Но он может быть сколько угодно новым,
> но идентичным по содержанию, отсюда я и применил diff - а
> это уже 100% что результат будет однозначный.Ладно, так и быть :) , согласен на
if [ $NEWFILE -nt $OLDFILE ] || ! cmp --quiet $NEWFILE $OLDFILE; then
> stat: cannot stat `/etc/nginx/sites-available/default.old\r': No such file or directoryПохоже вы писали скрипт в редакторе который сохраняет текст в формате MS-DOS, с окончанием строк '\r\n' - в сообщении об ошибке, в имени файла последний символ '\r'.
Если ваш текстовый редактор умеет переключатся в режим где он сохранят текст с окончанием строк '\n', попробуйте сохранить текст скрипта в этом режиме.
> Похоже вы писали скрипт в редакторе которыйНет, скопировал созданное на винде notepad-ом в свою FreeBSD через Putty.
>> Похоже вы писали скрипт в редакторе который
> Нет, скопировал созданное на винде notepad-ом в свою FreeBSD через Putty.это и есть да - вы создали в редакторе, который добавляет в конце строки \r и скопировали с этим символом через пути.
>>> Похоже
>> Нет
> это и есть дафбсд админы с путти на винде [и не знающие про \r\n] -- это отдельный паттерн. я настаиваю.