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


Автор Тема: скрипт создает пустой файл  (Прочитано 404 раз)

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

Оффлайн Ilya С

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
скрипт создает пустой файл
« : 17 Октябрь 2016, 23:02:18 »
ДД!

Подскажите, почему этот скрипт создает пустой файл с именем 59?

cd /home/user/samba/motion/movie/
for f in *.avi;
do
((file_age=(`date +%s` - `date -r $f +%s`)))
age=59
if [ $file_age > $age ]; then ffmpeg -i "$f" -n $f.mp4; fi
done


Он должен пройтись по директории, и перекодировать avi в mp4, старше 59 секунд. Он это делает, только еще создает пустой файл с  именем 59. Почему?

Пользователь добавил сообщение 17 Октябрь 2016, 23:14:44:
Поменял это
[ $file_age > $age ]на это
[ $file_age -gt $age ]помогло

Почему так?
« Последнее редактирование: 17 Октябрь 2016, 23:14:44 от Ilya С »


Punko

  • Гость
Re: скрипт создает пустой файл
« Ответ #2 : 18 Октябрь 2016, 12:24:40 »
Ilya С, ответ дали, еще могу посоветовать заменить обратные кавычки на $():

((file_age=($(date +%s` - `date -r $f +%s))))
Это также выполнит команду.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3096
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #3 : 18 Октябрь 2016, 12:57:19 »
Код: Bash
  1. #!/bin/sh
  2. /usr/bin/find /home/user/samba/motion/movie/ -name '*.avi' -mmin +1 -exec /usr/bin/ffmpeg -i {} -n {}".mp4" \;
  3.  
« Последнее редактирование: 18 Октябрь 2016, 13:02:10 от EvangelionDeath »
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Ilya С

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #4 : 18 Октябрь 2016, 20:51:08 »
Axa-Ru, да, точно, именно на opennet я и попал, когда гуглил.

EvangelionDeath,

#!/bin/sh
/usr/bin/find /home/user/samba/motion/movie/ -name '*.avi' -mmin +1 -exec /usr/bin/ffmpeg -i {} -n {}".mp4" \;
Да, так короче, просто не осилил find, всегда ошибки выводил. Теперь понятно как.

Punko,

` - `
Эти ковычки тоже убрать?


Punko

  • Гость
Re: скрипт создает пустой файл
« Ответ #5 : 18 Октябрь 2016, 21:14:39 »
Ilya С, я невнимательно посмотрел, извиняюсь.
Кажду команду вместо обратных кавычек лучше брать в $()

((file_age=($(date +%s) - $(date -r $f +%s))))
и переменные можно в {} брать - так нагляднее(и ещё пару моментов есть, почему так лучше):


((file_age=($(date +%s) - $(date -r ${f} +%s))))
И да - зачем две (( перед переменной?

Оффлайн Ilya С

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #6 : 18 Октябрь 2016, 21:40:05 »
Цитировать
И да - зачем две (( перед переменной?
а я и не знаю, скопировал так где-то в интернете. Но без них у меня не работало.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5664
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #7 : 19 Октябрь 2016, 12:50:28 »
И да - зачем две (( перед переменной?
Потому что арифметическое действие, правда правильно такfile_age=$(($(date +%s) - $(date -r ${f} +%s)))
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Punko

  • Гость
Re: скрипт создает пустой файл
« Ответ #8 : 19 Октябрь 2016, 13:37:11 »
Потому что арифметическое действие
Да, точно. Получается, "$" не обязательно чтоль ставить? Интересно, надо будет потестировать.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7083
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #9 : 19 Октябрь 2016, 15:25:22 »
> перенаправление потока ввода/вывода.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5664
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #10 : 19 Октябрь 2016, 17:15:59 »
Получается, "$" не обязательно чтоль ставить?
Смотря что именно Вы хотите сделать. Например
Код: Bash
  1. ((i++))  #увеличили значение переменной i на 1
  2. echo $((i++)) #вывести значение переменной i затем увеличив его на 1
  3.  
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Punko

  • Гость
Re: скрипт создает пустой файл
« Ответ #11 : 19 Октябрь 2016, 18:11:10 »
Azure, спасибо.

 

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