Bash curl deyimine '&' karakteri nasıl eklenir


101

Bir web sayfasını indirmek için curl'yi bash'de kullanmaya çalışıyorum, ancak &URL'deki sembol istediğim gibi bir karakter olarak yorumlanmıyor. Bash'i sembolün &sıkıcı bir karakter olduğuna ve özel bir şey olmadığına nasıl ikna edebileceğime dair bir fikriniz var mı?


Bunun size yardımcı olması gereken aşağıdaki konuya bir göz atın - stackoverflow.com/questions/2067969/…
morgents

Ben yerine denedim &ile sembol \&, '&', "&", ^&ancak düzgün değerlendirmek için URL almak mümkün olmamıştır. Aslında, '&'Terminal.app'den curl komutunu çalıştırdığımda çalışıyor, ancak onu bir bash betiğine yerleştirdiğimde başarısız oluyor, bir döngüye sarıyor ve çalıştırıyorum.
Chernoff

Yanıtlar:


125

Tüm URL'yi çift tırnak içine almak sorununuzu çözmelidir.


9
Değişkenleri çözme ihtiyacı olmadıkça tek tırnak daha iyi olabilir.
jpm

Tüm URL'yi tırnak içine aldığımda ifade ${i}bir değer döndürmüyor.
Chernoff

2
Benim durumumda, tek tırnak işe yararken çift tırnak başarısız oldu.
abeboparebop

3
Lütfen alıntıları yazmak için hangi programın kullanıldığına dikkat edin. Bir kabuk komut dosyasını düzenlemek için acele ederken, bir metin düzenleme programı kullandım. Düz çift tırnak yerine eğimli tırnak işaretleri koydu. Bu, senaryoyu gerçekten karıştırır ve sorunu bulmayı zorlaştırır!
David

42
curl "http://www.example.com?m=method&args=1"

GET URL'si için sınırlayıcı olarak & karakterini mi kullanıyorsunuz? Yoksa bir veri parçasında mı?

Verinin içindeyse, bunu bir HTML karakterine kodlamalısınız, değilse, tırnak içine alın.

İçin kodlama URL'de &olmalıdır %26.

curl "http://www.example.com?m=this%26that

&Sembolü, neredeyse tam olarak sizin gösterdiğiniz gibi bir veri parçası olarak kullanıyorum . İşin püf noktası, kullandığım sayısal değerler yerine ${i}. Bu yüzden http://www.example.com?m=method&args=${i}bir URL olarak değerlendirmek istiyorum .
Chernoff

3
URL'yi az önce gösterme şeklim GET değişkenleri için ayırıcı olarak '&' kullanmaktadır, bu yüzden şimdi kafam karıştı, $ [i] içinde '&' Bu durumda, URL'yi kodlamanız gerekecektir. & =% 26
Matt Clark

1
Bütün interneti aradım çözümü bulamadı. @MattClark sen kahramansın. Sadece url kodlandım ve bu bir veri parçasıydı ve betiğim iyi çalışıyor.
Rehman ur Haris

1
İkinci kod pasajının sonunda "eksik" mi var?
David

24

&Sembolün etrafına tek tırnak işareti koymak işe yarıyor gibi görünüyor. Yani http://www.example.com/page.asp?arg1=${i}'&'arg2=${j}curl gibi bir URL kullanmak istenen web sayfasını döndürür.


2
gelecekteki görüşler için net olması için soruya argüman gerekliliğini dahil etmelisiniz.
Manatax

Bu cevap neden kabul edildi? Bu cevaba erişilmelidir stackoverflow.com/a/13339492/2898694
Sharikov Vladislav

14

"&" Kaçış karakterlerini denemek yerine, aşağıda gösterildiği gibi -d parametresi ile POST isteklerinde http url parametrelerini belirtebilirsiniz:

curl -X POST http://www.example.com \
-d arg1=this \
-d arg2=that

İstek bir GET ise, curl'ye verileri GET isteği ile göndermesini söyleyen -G seçeneğini de eklemelisiniz.

curl -X GET -G http://www.example.com \
-d arg1=this \
-d arg2=that

1
Bu benim için çalıştı. Çift tırnak eklemek işe yaramadı.
Juhog

9

Bunun %26yerine kullanabilirsiniz &. Varlık kodu düzgün çalışacaktır.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.