LINUX.ORG.RU

Как это можно сделать?


0

0

Здравствуйте. Есть URL вида http://site.com/$FOLDER/$i.jpg

Где $FOLDER - название текущей папки, $i - seq 0 100. Я написал скрипт, который принимает два значение - имя папки и максимальный индекс файла. Он создает папку и скачивает файлы. Теперь я хочу написать команду, которая открывает файл со списком папок и макс. значений и выполняет скрипт. Т.е. в файле подобные данные

nature 100
3d 20
cars 14
arch 30

Необходимо взять каждую строчку, распарсить и запустить скрипт, чтобы получилось:

http://site.com/nature/0.jpg
....
http://site.com/nature.100.jpg

Мне не нужна готовая команда, мне больше интересно как это можно сделать. Т.е. интересует инструмент которым это можно сделать. Спасибо.

Re: Как это можно сделать?

bash+(sed/awk)

iRunix ★★★★ ()

Re: Как это можно сделать?

perl/php + gd-lib

gh0stwizard ★★★★★ ()
Ответ на: Re: Как это можно сделать? от facelift

Re: Как это можно сделать?

Вот как сделал

awk '{print "./x.sh"$1" "$2}' list | bash

Только вот "| bash" мне не нравится. Есть другие варианты как это можно сделать?

facelift ()

Re: Как это можно сделать?

> Я написал скрипт, который принимает два значение

назовем его «script»

> в файле подобные данные

назовем его «file»

хм... может я чего-то не понимаю...

1. cat file | xargs script

2. for x in `cat file`; do script $x; done

?

Rastafarra ★★★★ ()
Ответ на: Re: Как это можно сделать? от Rastafarra

Re: Как это можно сделать?

1) cat file | xargs script Выполняет только для первой записи, а вот cat file | xargs -l script выполняет для всего файла. За это спасибо. 2) for x in `cat file`; do script $x; done А вот тут скрипт выполняется для каждого слова, а не для каждой линии. Т.е. выполняется ./script folder1 ./script 12 ./script folder2 ./script 200 А вот как сделать так чтобы for считывал линию?

facelift ()
Ответ на: Re: Как это можно сделать? от facelift

Re: Как это можно сделать?

> xargs -l script выполняет для всего файла.

даблин... постоянно забываю....

> А вот как сделать так чтобы for считывал линию?

man bash на предмет IFS. надо что-то вроде IFS=$'\n'.

Rastafarra ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.