URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9410
[ Назад ]

Исходное сообщение
"Помогите разобраться"

Отправлено Yak , 13-Мрт-12 01:37 
написал скрипт для перезагрузки конфига 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'

Подскажите где ошибся?


Содержание

Сообщения в этом обсуждении
"Помогите разобраться"
Отправлено shadow_alone , 13-Мрт-12 03:04 
#!/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



"Помогите разобраться"
Отправлено parad , 13-Мрт-12 16:14 
+1 - размер файла может не измениться при правке.

"Помогите разобраться"
Отправлено Andrey Mitrofanov , 13-Мрт-12 16:21 
> /usr/bin/diff -q $OLDFILE $NEWFILE > /dev/null
> if [ $? -ne 0 ];then

if [ $NEWFILE -nt $OLDFILE ];


"Помогите разобраться"
Отправлено shadow_alone , 14-Мрт-12 06:05 
> if [ $NEWFILE -nt $OLDFILE ];

Ну, более новый, тоже можно. Но он может быть сколько угодно новым, но идентичным по содержанию, отсюда я и применил diff - а это уже 100% что результат будет однозначный.


"Помогите разобраться"
Отправлено Andrey Mitrofanov , 14-Мрт-12 09:45 
> Ну, более новый, тоже можно. Но он может быть сколько угодно новым,
> но идентичным по содержанию, отсюда я и применил diff - а
> это уже 100% что результат будет однозначный.

Ладно, так и быть :) , согласен на

if [ $NEWFILE -nt $OLDFILE ] || ! cmp --quiet $NEWFILE $OLDFILE; then


"Помогите разобраться"
Отправлено elvenic , 13-Мрт-12 03:10 
> stat: cannot stat `/etc/nginx/sites-available/default.old\r': No such file or directory

Похоже вы писали скрипт в редакторе который сохраняет текст в формате MS-DOS, с окончанием строк '\r\n' - в сообщении об ошибке, в имени файла последний символ '\r'.

Если ваш текстовый редактор умеет переключатся в режим где он сохранят текст с окончанием строк '\n', попробуйте сохранить текст скрипта в этом режиме.



"Помогите разобраться"
Отправлено Andrey Mitrofanov , 13-Мрт-12 10:24 
> Похоже вы писали скрипт в редакторе который

Нет, скопировал созданное на винде notepad-ом в свою FreeBSD через Putty.


"Помогите разобраться"
Отправлено parad , 13-Мрт-12 16:13 
>> Похоже вы писали скрипт в редакторе который
> Нет, скопировал созданное на винде notepad-ом в свою FreeBSD через Putty.

это и есть да - вы создали в редакторе, который добавляет в конце строки \r и скопировали с этим символом через пути.


"Помогите разобраться"
Отправлено Andrey Mitrofanov , 13-Мрт-12 16:31 
>>> Похоже
>> Нет
> это и есть да

фбсд админы с путти на винде [и не знающие про \r\n] -- это отдельный паттерн. я настаиваю.