Author Topic: Shell-скриптинг  (Read 5269 times)

0 Members and 1 Guest are viewing this topic.

Offline vukor

  • Jr. Member
  • **
  • Posts: 99
  • Karma: +0/-0
    • http://vukor.tomsk.ru
Shell-скриптинг
« on: January 18, 2006, 17:05:11 »
Приветствую.

Я новичок в программировании на шеле.

Ситуация следующая - в определенном каталоге лежат файлы.

Проблема - как мне в скрипте запихать все имена файлов в отдельные переменные, чтобы потом иметь к ним доступ.

Пример:

В каталоге - file1, file2 и т.д.
В скрипте - $var1 = file1, $var2 = file2 и т.д.

Приведите пример кода пожалуйста.

P.S. заранее благодарен.

Offline Safir

  • Sr. Member
  • ****
  • Posts: 402
  • Karma: +0/-0
    • http://
Shell-скриптинг
« Reply #1 on: January 18, 2006, 18:11:31 »
А зачем оно надо? Что этот скрипт должен делать? Просто может быть гораздо более простой путь для решения твоей задачи :).

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Shell-скриптинг
« Reply #2 on: January 18, 2006, 18:12:52 »
Quote
Приветствую.

Я новичок в программировании на шеле.

Ситуация следующая - в определенном каталоге лежат файлы.

Проблема - как мне в скрипте запихать все имена файлов в отдельные переменные, чтобы потом иметь к ним доступ.

Пример:

В каталоге - file1, file2 и т.д.
В скрипте - $var1 = file1, $var2 = file2 и т.д.

Приведите пример кода пожалуйста.

P.S. заранее благодарен.
[snapback]6973[/snapback]
Вопрос -- зачем? Как потом этим пользоваться? Ведь сколько файлов в каталоге заранее не известно.
Code: [Select]
for i in *;do
  do_something_with $i;
done
позволит в цикле произвести операции со всеми файлами и каталогами из текущего каталога.
Code: [Select]
for i in `find -type f`;do
  do_something_with $i;
done
сделает тоже самое, но рекурсивно и только с файлами.
хотя использовать find лучше например так
Code: [Select]
find -type file -exec do_something_with {} \;проблем с файлами содержащими в имени пробелы не будет.
Можно просто плучить список файлов
FILE_LIST=*
а потом его использовать по своему усмотрение
например
Code: [Select]
FILE_LIST=*;set $FILE_LIST;echo первый файл $1;
« Last Edit: January 18, 2006, 18:14:08 by demiurg »

Offline vukor

  • Jr. Member
  • **
  • Posts: 99
  • Karma: +0/-0
    • http://vukor.tomsk.ru
Shell-скриптинг
« Reply #3 on: January 18, 2006, 20:07:52 »
Ребята, сасибо за ответы. Буду пробовать.

Вообще, зачем ?

Опишу задачу.

Очень часто приходится склеивать один определенный видеофайл с другими.
Т.е. на входе - видеофайл и видеофайл1, видеофайл2 и т.д.
На выходе надо получать - видеофайл+видеофайл1, видеофайл+видеофайл2 и т.д.

Вот и захотелось автоматизировать этот процесс. А то на VirtualDub'е, признаться, запарился..
Нашел программку под unix, точнее набор пакетов - transcode. Там есть программа avimerge. Работает так:

#avimerge -i видеофайл.avi видеофайл1.avi -o new_input1.avi

Получаем новый видеофайл.

Так вот, этих видеофайлов  - тьма, т.е. много.

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Shell-скриптинг
« Reply #4 on: January 18, 2006, 20:41:44 »
Quote
Нашел программку под unix, точнее набор пакетов - transcode. Там есть программа avimerge. Работает так:

#avimerge -i видеофайл.avi видеофайл1.avi -o new_input1.avi

Получаем новый видеофайл.

Так вот, этих видеофайлов  - тьма, т.е. много.
[snapback]6977[/snapback]
Code: [Select]
avimerge -i *.avi -o new_input1.aviсклеит все avi из текущего каталога, расположив их в алфавитном порядке.


Offline One

  • Jr. Member
  • **
  • Posts: 87
  • Karma: +0/-0
Shell-скриптинг
« Reply #5 on: January 25, 2006, 12:52:47 »
А если всё равно MPlayer пользуете, то можно mencoder'ом влёгкую: не нужно держать доп. пакет :) если чисто для склейки.