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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #3 : 18 Октября 2016, 12:57:19 »
Код: (bash) [Выделить]
#!/bin/sh
/usr/bin/find /home/user/samba/motion/movie/ -name '*.avi' -mmin +1 -exec /usr/bin/ffmpeg -i {} -n {}".mp4" \;
« Последнее редактирование: 18 Октября 2016, 13:02:10 от EvangelionDeath »
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн 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

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
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
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7203
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: скрипт создает пустой файл
« Ответ #9 : 19 Октября 2016, 15:25:22 »
> перенаправление потока ввода/вывода.

Оффлайн Azure

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

Punko

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

 

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