2013-01-23 4 views
0

아래 코드는 외국어에서는 작동하지 않지만 영어 단어에서는 완벽하게 작동합니다. Topsy, Twitter, Curl, Bash

let int=1244764800 
let start=86400+$int 
let l=86400*7 
let end=$int-$l 

for ((k = $start ; k > $end ; k=k-3600)) do 
for ((j = 1 ; j < 11 ; j++)) do 
let mintime=$k-3600; 
let maxtime=$k 
searchwords="سلام" 

#echo $maxtime 
curl "http://otter.topsy.com/search.json?q="${searchwords}"&page="$j"&perpage=100&mintime="${mintime}"&maxtime="${maxtime}"&apikey=FAF7F2D0D8A143978CB7762CE35FCF99" 
done 
done 

은 다음과 산출 :

curl: (7) couldn't connect to host

curl: (7) couldn't connect to host 

내가이 스크립트는 영어 단어와 함께 완벽하게 작동 반복,하지만 난 어떤 도움을 주셔서 감사 할 수 있도록 외국어로 이것을 실행해야 /지도! 고마워요 :)

답변

2

당신은 urlencode 비 ASCII 문자가 필요합니다 같아요. curl이 아닌 curl --data-urlencode을 사용해보세요.

하면 바로 작동 여기에 작업 예제 (curl-d에 읽어) 여전히 --data-urlencode

를 사용하여 데이터를 매개 변수를 이동하지 않습니다 URL 문자열 앞에 추가 :

curl -G --data-urlencode "q=سلام" -d page=1 -d mitime=1244764800 -d maxtime=1245764800 -d apikey=FAF7F2D0D8A143978CB7762CE35FCF99 "http://otter.topsy.com/search.json" 
+0

감사합니다. 이것은 일했다 :) – user1011332

0

당신은 정액을 검색어의 문자를 이스케이프해야합니다.

curl의 --data-urlencode 인수를 사용해 볼 수 있습니다.

펄을 사용하거나 bash를 사용하여 bash에서 수행하는 방법에 대한 좋은 글이 in this link 있습니다.