Intereting Posts
Как изменить разрешение в LXDE? ПУТЬ env var объявлен в / etc / environment не наследуется? Не удается найти файл общих объектов, даже если он находится в пути к библиотеке «Возобновление» Ubuntu после смерти батареи Как выбрать строку текста в браузере архаичного терминала – Ссылки Есть ли прочь, чтобы заставить make применить правило к каждому файлу, который соответствует шаблону? Пропустить текст в выводе с помощью grep в режиме Perl Как выполнить код, структуру и базу данных GPLI? Закрепить файловую систему Android на Linux вручную Как переменные могут использовать «~» для cd'ing? Gnome 3 keybindings в источнике? Где ctrl-c … (вырезать, копировать и вставлять)? Каковы некоторые из этих каталогов в ядре Linux src? Проблема использования ssh из дома в университет Из сценария оболочки выполните другой с аргументами и получите код возврата Копирование страницы справки Webmin: iso-8859-1 vs utf-8

Используйте curl для загрузки списка файлов в csv

У меня есть csv расширений URL-адресов JPG.

http://www.example.com/images/[url_extension] 

Я хочу использовать curl для прокрутки CSV и загрузки jpg на каждом расширении. Пока у меня есть следующее, но я боюсь синтаксиса. Любая помощь приветствуется.

 #!/bin/bash file=urlextensions.csv while read line do outfile=$(echo $line | awk 'BEGIN { FS = "/" } ; {print $NF}') curl -o "$http://www.example.com/images/" "$line" done < "$/Users/Me/Documents/urlextensions.csv" 

В вашем коде есть несколько ошибок:

  1. Вы определяете file в строке 2, но затем вы не используете его в цикле.
  2. Ввод $ перед вещами заставит оболочку попытаться заменить его, что, вероятно, не так, как вы хотите, когда вы делаете $http или $/Users .
  3. Вы определяете outfile в своем цикле, но вы его не используете. Возможно, вы хотели положить его после -o на свою линию завитка.
  4. Аргумент -o для завивки должен быть именем файла, но вы помещаете туда URL.
  5. Базовый URL ( http://www.example.com/images ) и часть, которую вы добавляете к нему, должны быть в одном и том же аргументе, а не разделены пробелом, который заставит оболочку думать, что она принимает два аргумента.

Поэтому я получаю:

 #!/bin/bash filename=./extensions.txt while read line || [[ -n "$line" ]]; do echo downloading $line curl -o $line "http://example.com/$line" done < "$filename" 

Если вы поместите это в имя файла read_examp и сделаете его исполняемым, вы увидите, что он работает как:

 chicks$ cat extensions.txt foo bar baz chicks$ ./read_examp foo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1270 100 1270 0 0 41794 0 --:--:-- --:--:-- --:--:-- 42333 bar % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1270 100 1270 0 0 53987 0 --:--:-- --:--:-- --:--:-- 55217 baz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1270 100 1270 0 0 48366 0 --:--:-- --:--:-- --:--:-- 48846 chicks$ ls -l `cat extensions.txt` -rw-r--r-- 1 chicks staff 1270 Oct 7 10:01 bar -rw-r--r-- 1 chicks staff 1270 Oct 7 10:01 baz -rw-r--r-- 1 chicks staff 1270 Oct 7 10:01 foo 

Примечание: вы указываете CSV, но ваш примерный код, похоже, вообще не имеет отношения к этому. Вы можете расширить это с помощью чего-то вроде этого, чтобы вытащить поле из своего CSV вместо использования всей строки.