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


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

Автор Тема: Проверьте скрипт пожалуйста.  (Прочитано 2603 раз)

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

izamoo

  • Автор темы
  • Гость
Проверьте скрипт пожалуйста.
« : 17 Сентября 2011, 23:39:14 »
написал простенький скрипт, который перемещает файлы .jpg и .bmp  в папку /home/vlad/Картинки. Дело в том что если в папке загрузки один файл то всё работает, но если ради эксперимента я вставляю картинки в папку загрузки и запускаю скрипт, то пишет вот что:
vlad@vlad-desktop:~/Рабочий стол/Admin_Linux$ sh ./download_script
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
[: 13: 262_2871.jpg: unexpected operator
vlad@vlad-desktop:~/Рабочий стол/Admin_Linux$
Что неправильно?
Сам скрипт:#!/bin/bash
down=/home/vlad/Загрузки
pic=/home/vlad/Картинки
cd $down
files=`ls $down`
jpg=*.jpg
bmp=*.bmp
for j in $files; do
if [ $j = $jpg ]; then mv $j $pic; echo "Файл $j перемещен"
fi
done

for b in $files; do
if [ $b = $bmp ]; then mv $b $pic; echo "Файл $b перемещен"
fi
done
« Последнее редактирование: 18 Сентября 2011, 10:43:59 от izamoo »

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Re: Проверьте скрипт пожалуйста.
« Ответ #1 : 17 Сентября 2011, 23:46:24 »
а обязательно делать это скриптом? может файндом проще?
find /source/ \( -iname "*.jpg" -a  -iname "*.bmp" \)  -exec mv {} /destanation/ \;  -print /source/ и /destanation/ заменить на свои папки
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

izamoo

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #2 : 17 Сентября 2011, 23:48:33 »
может быть и проще, для меня важно попрактиковатся в Shell.  Ответьте пожалуйста кто знает, что тут неправильно, почему так?
« Последнее редактирование: 17 Сентября 2011, 23:51:40 от izamoo »

Axa-Ru

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #3 : 18 Сентября 2011, 06:51:33 »

if [ "$b" = "$bmp" ]; then
____________|
Это, если про ошибку синтаксиса.
Но после справления все равно не получите результата, поскольку вы сравниваете строки и wildcard здесь ни при чем.
Нужно использовать нахождение подстроки ".bmp" или ".BMP" в "$b"
« Последнее редактирование: 18 Сентября 2011, 07:02:56 от Axa-Ru »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Проверьте скрипт пожалуйста.
« Ответ #4 : 18 Сентября 2011, 07:38:20 »
$ sh ./download_script
[: 13: 262_2871.jpg: unexpected operator
...
bash != sh, и вообще, лучше так:
$ ./download_script
find /source/ \( -iname "*.jpg" -a  -iname "*.bmp" \)  -exec mv {} /destanation/ \;  -print
+1

/source/ и /destanation/ заменить на
"$(xdg-user-dir DOWNLOAD|PICTURES|...)"

izamoo

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #5 : 18 Сентября 2011, 08:52:23 »
если запустить так ./download_script, то выдаёт вот что:
(Нажмите, чтобы показать/скрыть)
Что это значит .....слишком много аргументов?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Проверьте скрипт пожалуйста.
« Ответ #6 : 18 Сентября 2011, 09:25:36 »
Что это значит .....слишком много аргументов?
Проверяйте промежуточные значения переменных.

izamoo

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #7 : 18 Сентября 2011, 09:30:38 »
Что это значит .....слишком много аргументов?
Проверяйте промежуточные значения переменных.

но если в папке " загрузка" одна картинка, то всё работает, а если более одной то пишет вот это.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Проверьте скрипт пожалуйста.
« Ответ #8 : 18 Сентября 2011, 09:37:25 »
Почувствуйте разницу:
jpg="*.jpg"
echo $jpg
echo "$jpg"

izamoo

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #9 : 18 Сентября 2011, 10:42:23 »
Почувствуйте разницу:
jpg="*.jpg"
echo $jpg
echo "$jpg"

убрал кавычки все равно тоже самое

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Проверьте скрипт пожалуйста.
« Ответ #10 : 18 Сентября 2011, 10:45:28 »
Убирать не нужно, добавьте.

izamoo

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #11 : 18 Сентября 2011, 10:48:08 »
Убирать не нужно, добавьте.

Так?
(Нажмите, чтобы показать/скрыть)
Тоже самое.
« Последнее редактирование: 18 Сентября 2011, 10:51:04 от izamoo »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Проверьте скрипт пожалуйста.
« Ответ #12 : 18 Сентября 2011, 11:06:41 »
Каждое обращение к переменным и их значениям.
См. пример с echo выше.

izamoo

  • Автор темы
  • Гость
Re: Проверьте скрипт пожалуйста.
« Ответ #13 : 18 Сентября 2011, 11:29:15 »
Каждое обращение к переменным и их значениям.
См. пример с echo выше.

какая то ошибка в 11 строке, блин невижу. :-\

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Проверьте скрипт пожалуйста.
« Ответ #14 : 18 Сентября 2011, 11:46:51 »
какая то ошибка в 11 строке
Это из чего следует?

 

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