Próbuję użyć curl w bash, aby pobrać stronę internetową, ale &
symbol w adresie URL nie jest interpretowany jako znak, tak jak bym chciał. Jakieś pomysły, jak mogę przekonać basha, że symbol &
jest tylko nudną postacią i niczym szczególnym?
100
&
symbol z\&
,'&'
,"&"
,^&
ale nie byli w stanie uzyskać adres URL, aby ocenić prawidłowo. Właściwie'&'
działa, gdy uruchamiam polecenie curl z Terminal.app, ale kończy się niepowodzeniem, gdy umieszczam je w skrypcie bash, zawijam w pętlę i uruchamiam.Odpowiedzi:
Umieszczenie całego adresu URL w podwójnych cudzysłowach powinno rozwiązać problem.
źródło
${i}
nie zwraca wartości.curl "http://www.example.com?m=method&args=1"
Czy używasz znaku & jako separatora adresu URL GET? Czy jest w danych?
Jeśli jest w danych, musisz zakodować go na znak HTML, jeśli nie, ująć go w cudzysłów.
Kodowanie
&
powinno znaleźć się%26
w adresie URL.curl "http://www.example.com?m=this%26that
źródło
&
symbolu jako danych, prawie dokładnie tak, jak pokazałeś. Problem polega na tym, że zamiast wartości liczbowych używam${i}
. Więc chcęhttp://www.example.com?m=method&args=${i}
ocenić jako adres URL.&
Wydaje się, że umieszczanie pojedynczych cudzysłowów wokół symbolu działa. Oznacza to, że użycie adresu URL takiego jakhttp://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
curl zwraca żądaną stronę internetową.źródło
Zamiast próbować używać znaków zmiany znaczenia „&”, możesz określić parametry adresu URL http w żądaniach POST za pomocą parametru -d, jak pokazano poniżej:
Jeśli żądanie jest GET, należy również dodać opcję -G, która mówi curlowi, aby wysłał dane za pomocą żądania GET.
źródło
Możesz użyć
%26
zamiast tego&
. Kod jednostki będzie działał dobrze.źródło
Użyj parametru
--url
z podwójnymi cudzysłowami, które zadziałały dla mnieźródło