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
コードにいくつかのエラーがあります。
- 2行目で定義します
file
が、ループでは使用しないでください。 $
それを前に置くと、シェルはそれを置き換えようとし$http
ます$/Users
。- ループで定義しますが、
outfile
使用しないでください。たぶんあなたはそれを-o
カールラインに入れたいと思うかもしれません。 - カールの引数は
-o
ファイル名でなければなりませんが、そこにURLを入力します。 - ベース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からフィールドを抽出します。