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


Автор Тема: Как реализовать задачу в Shell'е  (Прочитано 568 раз)

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

Оффлайн Int_20h

  • Автор темы
  • Участник
  • *
  • Сообщений: 136
    • Просмотр профиля
Как реализовать задачу в Shell'е
« : 20 Июль 2008, 17:33:58 »
Прочитал кучу сайтов, но никак не могу найти решение для своей задачи.

Есть упрощенная команда wget (упрощенная, поскольку скомпилирована без поддержки загрузки ссылок из файла). Следовательно, для того чтобы она скачала 50 файлов, каждую ссылку ей нужно передать в качестве параметра.

Ссылки лежат в файле links. Как через скрипт shell'а каждую строку файла links передать в качестве параметра в wget?

Пробую wget `cat links`. wget подхватывает только первую строку... :(

Видимо нужно делать через переменные и цикл, но как читать из файла строки по очереди, никак не пойму.

Оффлайн ADL

  • Активист
  • *
  • Сообщений: 447
    • Просмотр профиля
Re: Как реализовать задачу в Shell'е
« Ответ #1 : 20 Июль 2008, 18:53:23 »
до EOF мб

Оффлайн Int_20h

  • Автор темы
  • Участник
  • *
  • Сообщений: 136
    • Просмотр профиля
Re: Как реализовать задачу в Shell'е
« Ответ #2 : 20 Июль 2008, 19:01:14 »
вопрос в том, как прочитать из строки из файла, и передать каждую в качестве параметра другой команде?

Оффлайн dmay

  • Старожил
  • *
  • Сообщений: 1084
  • man google, кому сказал!
    • Просмотр профиля
Re: Как реализовать задачу в Shell'е
« Ответ #3 : 20 Июль 2008, 19:44:15 »
man xargs
забудь про циклы
Ты попал в мою коллекцию криворуких тупых нубов!

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: Как реализовать задачу в Shell'е
« Ответ #4 : 20 Июль 2008, 20:38:27 »
Проверяется существование файла и если существует, то.
В файле на каждой строке два слова, оба слова считываются за один проход в переменные PARAM и VALUE. Внутри цикла идёт разбор того чего было считано, это уже оффтопик.

######## Reading configuration file ########
CONFIG_FILENAME=/etc/bill.conf

if [ -f $CONFIG_FILENAME ] ; then
 while read PARAM VALUE
 do
  {
   case $PARAM in
    STAT_STORAGE_PATH|stat_storage_path)
     STAT_STORAGE_PATH=$VALUE ;;
    MONTH_REPORT_FILE|month_report_file)
     MONTH_REPORT_FILE=$VALUE ;;
   esac
  }
 done < $CONFIG_FILENAME
else
 echo "ERROR [$0]: Not found configuration file \"$CONFIG_FILENAME\"."
 exit 1
fi
######## Reading configuration file END ########
StarDict и Mueller помогут против английского мануала.

 

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