カールを使用してCSVファイルリストをダウンロードする

カールを使用してCSVファイルリストをダウンロードする

JPG URL拡張子を持つCSVがあります。

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

カールを使用して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

コードにいくつかのエラーがあります。

  1. 2行目で定義しますfileが、ループでは使用しないでください。
  2. $それを前に置くと、シェルはそれを置き換えようとし$httpます$/Users
  3. ループで定義しますが、outfile使用しないでください。たぶんあなたはそれを-oカールラインに入れたいと思うかもしれません。
  4. カールの引数は-oファイル名でなければなりませんが、そこにURLを入力します。
  5. ベースURL(http://www.example.com/images)とここに追加する部分はスペースで区切らず、同じパラメータにする必要があります。そうしないと、シェルには2つのパラメータが必要だと思われます。

だから私は次のように終わります。

#!/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からフィールドを抽出します。

おすすめ記事