Jadi saya punya skrip yang, ketika saya berikan dua alamat, akan mencari dua tautan HTML:
echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
Saya ingin mengirim ini ke wget
dan kemudian menyimpan output dalam file bernama temp.html
. Saya mencoba ini, tetapi tidak berhasil. Adakah yang bisa menjelaskan mengapa dan / atau memberi saya solusi?
#!/bin/bash
url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
wget $url
bash
shell
command-line
LotoLo
sumber
sumber
Jawaban:
Anda dapat menggunakan backticks (`) untuk mengevaluasi perintah dan mengganti dalam output perintah, seperti:
Dalam kasus Anda:
sumber
$(...)
lebih disukai daripada backticks .Anda bisa menggunakan "xargs". Contoh sepele:
Anda harus berhati-hati agar xargs tidak membagi stdin menjadi dua atau lebih pemanggilan komandan ("cat" pada contoh di atas).
sumber
Anda sebenarnya tidak mengeksekusi baris url Anda:
sumber
Tampaknya Anda dapat menggunakan kombinasi jawaban di sini. Saya kira Anda ingin mengganti karakter ruang dengan nilai ascii yang lolos di url. Untuk melakukan ini, Anda harus menggantinya dengan "% 20", bukan hanya "%". Inilah solusi yang harus memberi Anda jawaban lengkap:
Backtick menunjukkan bahwa perintah terlampir harus ditafsirkan terlebih dahulu, dan hasilnya dikirim ke wget. Perhatikan, saya lolos dari spasi dan% chars di perintah sed untuk mencegah mereka disalahartikan. Opsi -q untuk wget mencegah pemrosesan output dari perintah yang dicetak ke layar (berguna untuk skrip ketika Anda tidak peduli tentang status di-kerja) dan opsi -O menentukan file output. FYI, jika Anda tidak ingin menyimpan output ke file, tetapi hanya melihatnya di terminal, gunakan "-" alih-alih nama file untuk menunjukkan stdout.
sumber
wget juga menerima stdin dengan
-
saklar.Jika Anda ingin menyimpan output dalam file, gunakan
-O
switch.sumber