Ошибка при выполнении bash скрипта

illmano

Старатель
Регистрация
20 Июн 2012
Сообщения
172
Реакции
14
Всем привет.
Нашел в интернете такой скрипт для бекапа сайта
Код:
#!/bin/bash
### system setup ###
GZIP="$(which gzip)"
NOW=$(date +"%d-%m-%Y")
### www dirs setup ###
WWW_NAMES=("site1" "site2" "site3")
WWW_PATHS=("/var/www/site1/" "/var/www/site2/" "/var/www/site3/")
WWW_BACKUP_DIR=/var/www/backups/domains
FILES_OLDER_THAN=14 #days
# backup www
for WWW in ${!WWW_NAMES[*]}; do
    WWW_DIR=$WWW_BACKUP_DIR/${WWW_NAMES[$WWW]}
    if [ ! -d "$WWW_DIR" ]; then
        mkdir -p $WWW_DIR
    fi
    FILE=$WWW_DIR/www-${WWW_NAMES[$WWW]}-$NOW.tar.gz
    tar -zcf $FILE ${WWW_PATHS[$WWW]}
done
# delete files older than $DB_OLDER_THAN days
find $WWW_BACKUP_DIR -type f -mtime +$FILES_OLDER_THAN -exec rm {} \;

Запускаю его и получаю такие ответы:
Код:
sh backup_www.sh

'ackup_www.sh: line 11: syntax error near unexpected token `do

'ackup_www.sh: line 11: `for WWW in ${!WWW_NAMES[*]}; do

В чем ошибка?
 
Последнее редактирование:
даже сходу тяжело что то сказать, ибо тупо скопипастил код себе и он отработал без ошибок.
Тогда начнем с простого: Ваша ОС? Какой командный интерпретатор по умолчанию? (дайте вывод echo $SHELL )
 
даже сходу тяжело что то сказать, ибо тупо скопипастил код себе и он отработал без ошибок.
Тогда начнем с простого: Ваша ОС? Какой командный интерпретатор по умолчанию? (дайте вывод echo $SHELL )
centos-6

Код:
echo $SHELL
/bin/bash
 
фу блин, только щас разглядел, вы запускаете скрипт через интерпретатор sh ...
делаете backup_Для просмотра ссылки Войди или Зарегистрируйся исполняемым (chmod +x backup_Для просмотра ссылки Войди или Зарегистрируйся ) и просто запускаете его, если из той же директории, то ./backup_Для просмотра ссылки Войди или Зарегистрируйся
Вы точно 1в1 скопировали себе в файл то, что сюда запостили? не забыли у себя #!/bin/bash ?
В чем файл редактировали? В виндовом блокноте или линух редакторе - после do может прилепился какой то символ? (в mcedit можно например увидеть)
 
Код:
# chmod +x backup_www.sh
# ./backup_www.sh
-bash: ./backup_www.sh: /bin/bash^M: bad interpreter: No such file or directory
Может неправильно запускаю? я не очень силен в ssh
Скопировал с сайта в notepad++ и отредактировал. Насколько мне известно notepad++ не добавляет символов сам.
 
да, проблема именно в добавлении символов ^M в конец каждой строки.
отредактируй в мс (самый простой редактор, установка yum install mc ) поудаляй в конце строк ^M и вообще лишний мусор.
 
проблема какая-то при установке
Код:
Total download size: 1.8 M
Is this ok [y/N]: y
Downloading Packages:
http://centos.alt.ru/repository/centos/6/i386/mc-4.8.11-1.el6.i686.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 403"
Trying other mirror.


Error Downloading Packages:
  2:mc-4.8.11-1.el6.i686: failure: mc-4.8.11-1.el6.i686.rpm from CentALT: [Errno 256] No more mirrors to try.
 
репозиторий CentALT больше не будет делать пакетов, поэтому автор предусмотрительно убрал доступ к репе с устаревшим софтом. Можете отключить эту репу (или переместить/удалить файл
сentalt.repo из директории /etc/yum.repos.d/ или внутри него ставите enabled=0).
 
Это для меня не под силу)

Я как-то по удалял символы
теперь такое
Код:
sh backup_www.sh
backup_www.sh: line 20: syntax error: unexpected end of file
но 20 строки у меня нет. их всего 19.
 
там скорее всего тот же ^M
и не запускайте через sh, делайте ./backup_Для просмотра ссылки Войди или Зарегистрируйся (если вы в той же директории что и файл)
в вашем листинге в первом посте, 20 строка это:
find $WWW_BACKUP_DIR -type f -mtime +$FILES_OLDER_THAN -exec rm {} \;
 
Назад
Сверху