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
)과 여기에 추가하는 부분은 공백으로 구분되지 않고 동일한 매개변수에 있어야 합니다. 그렇지 않으면 쉘이 두 개의 매개변수가 필요하다고 생각하게 됩니다.
그래서 나는 다음과 같이 끝납니다.
#!/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에서 필드를 추출합니다.