Entonces tengo un script que, cuando le doy dos direcciones, buscará dos enlaces HTML:
echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
Quiero enviar esto wget
y luego guardar la salida en un archivo llamado temp.html
. Intenté esto, pero no funciona. ¿Alguien puede explicar por qué y / o darme una solución por favor?
#!/bin/bash
url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
wget $url
bash
shell
command-line
LotoLo
fuente
fuente
Respuestas:
Puede usar las teclas de retroceso (`) para evaluar un comando y sustituirlo en la salida del comando, como:
En tu caso:
fuente
$(...)
se prefiere sobre backticks .Podrías usar "xargs". Un ejemplo trivial:
Debería tener cuidado de que xargs no divida su stdin en dos o más invocaciones del comandante ("gato" en el ejemplo anterior).
fuente
en realidad no estás ejecutando tu línea de URL:
fuente
Parece que podría usar una combinación de las respuestas aquí. Supongo que desea reemplazar los caracteres espaciales con sus valores ascii escapados en la url. Para hacer esto, debe reemplazarlos con "% 20", no solo "%". Aquí hay una solución que debería darle una respuesta completa:
Los backticks indican que el comando adjunto debe interpretarse primero y el resultado debe enviarse a wget. Observe que escapé del espacio y los caracteres% en el comando sed para evitar que se malinterpreten. La opción -q para wget evita el procesamiento de salida del comando que se imprime en la pantalla (útil para secuencias de comandos cuando no le importa el estado en el trabajo) y la opción -O especifica el archivo de salida. Para su información, si no desea guardar la salida en un archivo, sino simplemente verla en la terminal, use "-" en lugar de un nombre de archivo para indicar stdout.
fuente
wget también acepta stdin con el
-
interruptor.Si desea guardar la salida en un archivo, use el
-O
interruptor.fuente