Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Не работает bash-скрипт(решено)  (Прочитано 4640 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ubuntar

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Qui quaerit, reperit
    • Просмотр профиля
Не работает bash-скрипт(решено)
« : 31 Январь 2009, 03:44:32 »
Есть такой скрипт:
#!/bin/bash
SRCD="/home/"                #SRCD - SouRCe Directory - исходный каталог
TGTD="/var/backups/"         #TGTD - TarGeT Directory - конечный каталог
OF=home-$(date +%d%m%Y).tgz  #OF - Output File - выходной файл
tar -czf $TGTD $OF $SRCD
Запускаю его в терминале,выскакивают ошибки:
ubuntu@ubuntu:/media/Part2/ubuntu/scripts$ /media/Part2/ubuntu/scripts/Homefolderbackup
tar: compress: Невозможно exec: No such file or directory
tar: Неисправимая ошибка: завершение работы
tar: tar: home-31012009.tgz: Невозможно stat: No such file or directory
tar: Удаляется начальный `/' из имен объектов
/var/backups/: Невозможно open: Is a directory
tar: Неисправимая ошибка: завершение работы
ubuntu@ubuntu:/media/Part2/ubuntu/scripts$
Запускаю скрипт из папки,в которой он находится.Папки все существуют.В чём моя ошибка?
« Последнее редактирование: 04 Февраль 2009, 14:58:57 от ubuntar »

Оффлайн AyaTooru

  • Активист
  • *
  • Сообщений: 257
    • Просмотр профиля
    • http://ayatooru.com
Re: Не работает bash-скрипт
« Ответ #1 : 31 Январь 2009, 06:44:56 »
а всё очень просто... лишний пробел уберите между $TGTD и $OF, а то получается у вас на выходе такое: tar -czf /var/backups/ home-31012009.tgz /home/
меняем на
tar -czf $TGTD$OF $SRCDи получается:
tar -czf /var/backups/home-31012009.tgz /home/

Оффлайн AyaTooru

  • Активист
  • *
  • Сообщений: 257
    • Просмотр профиля
    • http://ayatooru.com
Re: Не работает bash-скрипт
« Ответ #2 : 31 Январь 2009, 06:49:28 »
совет: чтобы понять в чем ошибка, иногда можно заменить конечную команду на echo.. я, например, так и сделал =)
изменил в скрипте tar на echo -czf $TGTD $OF $SRCDи ошибка сразу найдена

Оффлайн ubuntar

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Qui quaerit, reperit
    • Просмотр профиля
Re: Не работает bash-скрипт
« Ответ #3 : 31 Январь 2009, 19:08:23 »
Очень странно,но это не помогает.Скрипт выглядит теперь так:
#!/bin/bash
SRCD="media/Part2/ubuntu/PacketsDownloadScenario"               
TGTD="media/Part2/ubuntu/"         
OF=home_$(date +%d%m%Y).tgz
tar -czf $TGTD$OF $SRCD
Вывод в терминале:
ubuntu@ubuntu:/media/Part2/ubuntu/scripts$ sudo ./Homefolderbackup.sh
tar: media/Part2/ubuntu/home_31012009.tgz: Невозможно open: No such file or directory
tar: Неисправимая ошибка: завершение работы
tar: media/Part2/ubuntu/PacketsDownloadScenario: Невозможно stat: No such file or directory
ubuntu@ubuntu:/media/Part2/ubuntu/scripts$
В чем же дело? :idiot2:

Оффлайн tremor

  • Участник
  • *
  • Сообщений: 212
  • Промышляю локальными сетями
    • Просмотр профиля
    • Компьютерные сети в Екатеринбурге
Re: Не работает bash-скрипт
« Ответ #4 : 31 Январь 2009, 21:32:34 »
Кавычки какиенибудь. Типа "$per1$per2" надо пошагово сделать или в начале скрипта дописать +х в мэйджик строке... там все выводиться будет полностью
Вобщем я попробовал - все работает. Надо в переменных начальные слеши не забыть, переменную OF я еще и в кавычки взял.
« Последнее редактирование: 31 Январь 2009, 21:47:11 от tremor »

Оффлайн ubuntar

  • Автор темы
  • Участник
  • *
  • Сообщений: 129
  • Qui quaerit, reperit
    • Просмотр профиля
Re: Не работает bash-скрипт
« Ответ #5 : 31 Январь 2009, 22:50:36 »
Ну вроде,теперь не ругается,а первые слеши мне приказано было убрать,сам не знаю,почему.Но теперь почему-то sudo возвращает "permission denied".Я до этого дописал строку в fstab /dev/sda2     /media/Part2      ntfs-3g       user,auto,force        0      0,может,дело в этом?Как сделать,чтобы sudo всё-таки запустила этот скрипт?
      Я пытаюсь хоть как-то начать писать простенькие bash скрипты,ну делал по примеру,а там ничего не говорится больше,только "рецепт"  :( Для начала надо преуспеть хотя бы с рецептом.Вспомните "Hello,world!"  :)

Да.Дело было в этой строке как я написал выше,как-то получалось что права на весь том были у рута,и как-то вот блокировалось выполнение bash.

Вот подскажите,пожалуйста,если мне нужно сделать несколько операций с файлами,навроде двух команд подряд,скажем tar,то как их разделять между собой,что-то я ничегошеньки про простейший синтаксис не нашёл.Или может есть что-нибудь вроде операторных скобок,чтобы сначала одну команду,потом вторую запустить.Цикл мне не подходит,пути к файлам разные,пока сложновато. Нужно просто несколько команд подряд.Как?

ВсЁ!! Я разобрался и всё нашёл,разделитель команд всё-таки обычные кавычки,а заархивировать несколько файлов подряд мне помогло простое прочтение ман-ов по tar  :) Всех благодарю за помощь!
« Последнее редактирование: 04 Февраль 2009, 14:27:55 от ubuntar »

 

Страница сгенерирована за 0.06 секунд. Запросов: 24.