Просьба помочь с небольшим скриптом BASH

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
mops
Сообщения: 172
ОС: Ubuntu Feisty

Просьба помочь с небольшим скриптом BASH

Сообщение mops »

Есть скрипт, который конвертирует видео. В качестве первого аргумента он принимает название исходного файла. Так вот, как бы так сделать, чтобы он мог принимать например *.avi в качестве этого аргумента?
В bash я ноль, но докопался до такой штуки:

Код: Выделить всё

for arg in $1
do
echo "$arg";
done

Это выводит всего навсего первый файл. А вот если сделать так:

Код: Выделить всё

for arg in *.avi
do
echo "$arg";
done

то выводит все файлы.
Если вместо $1 подставить $@, то выводит все файлы и плюс остальные аргументы, что не годится.

Как же всё-таки правильно это сделать?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Просьба помочь с небольшим скриптом BASH

Сообщение diesel »

ls "$1"|while read i; do
echo $i;
done

?
PS. только запускать как ./script '*.sh' чтобы раньше времени * не подставляло :)
Спасибо сказали:
mops
Сообщения: 172
ОС: Ubuntu Feisty

Re: Просьба помочь с небольшим скриптом BASH

Сообщение mops »

diesel писал(а):
02.01.2007 23:58
ls "$1"|while read i; do
echo $i;
done

?
PS. только запускать как ./script '*.sh' чтобы раньше времени * не подставляло :)

Но таким же образом можно сделать и с предыдущим примером

Код: Выделить всё

for arg in $1
do
echo "$arg";
done
Точно такой же результат.
А вот если без кавычек? :)
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Просьба помочь с небольшим скриптом BASH

Сообщение diesel »

mops писал(а):
03.01.2007 00:11
Но таким же образом можно сделать и с предыдущим примером

попробуй на названии файла с пробелами :)

mops писал(а):
03.01.2007 00:11

Код: Выделить всё

for arg in $1
do
echo "$arg";
done
Точно такой же результат.
А вот если без кавычек? :)


./script *.avi - * подставляется до вызова скрипта. т.е. в реальности вызывается ./script 1.avi 2.avi ....
Спасибо сказали:
mops
Сообщения: 172
ОС: Ubuntu Feisty

Re: Просьба помочь с небольшим скриптом BASH

Сообщение mops »

diesel писал(а):
03.01.2007 00:15
mops писал(а):
03.01.2007 00:11

Но таким же образом можно сделать и с предыдущим примером

попробуй на названии файла с пробелами :)

mops писал(а):
03.01.2007 00:11

Код: Выделить всё

for arg in $1
do
echo "$arg";
done
Точно такой же результат.
А вот если без кавычек? :)


./script *.avi - * подставляется до вызова скрипта. т.е. в реальности вызывается ./script 1.avi 2.avi ....

А что тогда посоветуешь сделать? Скрипт вызывается таким образом
./script [source] [fps] [bitrade]
И как бы в таком случае обойтись без кавычек и иметь возможность отдавать скрипту маску?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Просьба помочь с небольшим скриптом BASH

Сообщение diesel »

./script [source] [fps] [bitrade]
./script [fps] [bitrade] [sources]

fps=$1
bitrade=$2
shift 2
for i in "$@"; do
echo $i;
done

?
Спасибо сказали:
mops
Сообщения: 172
ОС: Ubuntu Feisty

Re: Просьба помочь с небольшим скриптом BASH

Сообщение mops »

diesel писал(а):
03.01.2007 00:51
./script [source] [fps] [bitrade]
./script [fps] [bitrade] [sources]

fps=$1
bitrade=$2
shift 2
for i in "$@"; do
echo $i;
done

?

О, ну это уже лучше. Спасибо :)
Спасибо сказали:
Ответить