Saya mencoba menggunakan curl in bash untuk mengunduh halaman web, tetapi &
simbol di URL tidak ditafsirkan sebagai karakter seperti yang saya inginkan. Adakah ide tentang bagaimana saya bisa meyakinkan pesta bahwa simbol &
itu hanya karakter yang membosankan dan tidak ada yang istimewa?
100
&
simbol dengan\&
,'&'
,"&"
,^&
tapi belum mampu untuk mendapatkan URL untuk mengevaluasi dengan benar. Sebenarnya,'&'
berfungsi ketika saya menjalankan perintah curl dari Terminal.app, tetapi gagal ketika saya menempatkannya di skrip bash, membungkusnya dalam satu lingkaran dan menjalankannya.Jawaban:
Menempatkan seluruh URL di dalam tanda kutip ganda akan mengatasi masalah Anda.
sumber
${i}
tidak mengembalikan nilai.curl "http://www.example.com?m=method&args=1"
Apakah Anda menggunakan & sebagai pembatas untuk GET URL? Atau ada dalam sepotong data?
Jika ada dalam data Anda harus menyandikannya ke karakter HTML, jika tidak, beri tanda kutip.
Pengkodean untuk
&
harus ada%26
di URL.curl "http://www.example.com?m=this%26that
sumber
&
simbol sebagai bagian dari data, hampir persis seperti yang Anda tunjukkan. Tangkapannya adalah, alih-alih nilai numerik yang saya gunakan${i}
. Jadi saya inginhttp://www.example.com?m=method&args=${i}
mengevaluasi sebagai URL.Menempatkan tanda kutip tunggal di sekitar
&
simbol tampaknya berhasil. Artinya, menggunakan URL sepertihttp://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
dengan curl mengembalikan halaman web yang diminta.sumber
Daripada mencoba karakter escape "&", Anda dapat menentukan parameter url http dalam permintaan POST dengan parameter -d seperti yang ditunjukkan di bawah ini:
Jika permintaannya adalah GET, maka Anda juga harus menambahkan opsi -G, yang memberi tahu curl untuk mengirim data dengan permintaan GET.
sumber
Anda bisa menggunakan
%26
sebagai gantinya&
. Kode entitas akan berfungsi dengan baik.sumber
Gunakan parameter
--url
dengan tanda kutip ganda berhasil untuk sayasumber