WGET 오류는 쉘 스크립트를 깨뜨립니다.이를 방지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/535623

  •  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을 사용할 수 있습니다. 다른 운영 체제에서는 다른 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top