WGET 오류는 쉘 스크립트를 깨뜨립니다.이를 방지하는 방법은 무엇입니까?
-
22-08-2019 - |
문제
다운로드 할 다양한 유형의 파일에 대한 링크가 많은 거대한 파일이 있습니다. 각 줄은 다음과 같은 하나의 다운로드 명령입니다.
wget 'url1'
wget 'url2'
...
그리고 수천 명의 사람들이 있습니다.
불행히도 일부 URL은 예를 들어 다음과 같이 정말 못 생겼습니다.http://www.cepa.org.gh/archives/research-working-papers/wto4%20(1)-charles.doc브라우저에서는 OK가 열리지 만 WGET를 혼동합니다.
오류가 발생합니다.
./tasks001.sh : 35 행 : 예기치 않은 토큰 근처의 구문 오류`1 '
./tasks001.sh : 라인 35 :`wget 'http://www.cepa.org.gh/archives/research-working-papers/wto4%20(1)-charles.doc''
다운로드 할 내용을 지정하는 URL과 'URL'방법을 모두 시도했습니다.
무인 실행과 같은 대본을 만드는 방법이 있습니까? 다운로드 할 수없는 파일 만 건너 뛰면 괜찮습니다.
해결책
URL 주변의 단일 인용문 ( ')이 아닌 이중 인용문 ( ")을 사용해야한다고 생각합니다.
여전히 작동하지 않으면 Paren 캐릭터를 피하십시오. (
그리고 )
백 슬래시로 : \(
그리고 \)
어떤 쉘을 사용하고 있습니까? 세게 때리다? zsh?
다른 팁
(ab) 쉘을 사용하지 마십시오.
URL을 일부 파일에 저장하고 (my_urls.lst라고 가정 해 봅시다) :
wget -i my_urls.lst
WGET는 인용 등을 처리합니다
이것은 당신의 질문에 정확히 대답하지는 않지만 :
다음 두 명령은 Bash Shell에서 직접 작동합니다.
wget "http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc"
그리고
wget 'http://www.cepa.org.gh/archives/research-working-papers/WTO4%20(1)-charles.doc'
그 중 하나가 당신을 위해 일하는지 확인할 수 있습니까?
일어나는 것처럼 보이는 것은 당신의 쉘이 (캐릭터. 나는 당신의 URL 주위에 단일 따옴표 대신에 이중 따옴표를 사용하려고한다는 것입니다.
오류를 억제하려면 UNIX에서>/dev/null을 사용하여 표준 출력을 리디렉션하여 표준 오류를 리디렉션하기 위해 2>/dev/null을 사용할 수 있습니다. 다른 운영 체제에서는 다른 일 수 있습니다.