Então, eu tenho um script que, quando eu der dois endereços, procurará dois links HTML:
echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
Quero enviar isso para wget
e salvar a saída em um arquivo chamado temp.html
. Eu tentei isso, mas não funciona. Alguém pode explicar por que e / ou me dar uma solução, 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
fonte
fonte
Respostas:
Você pode usar backticks (`) para avaliar um comando e substituir na saída do comando, como:
No seu caso:
fonte
$(...)
é preferível a backticks .Você pode usar "xargs". Um exemplo trivial:
Você teria que tomar cuidado para que o xargs não divida seu stdin em duas ou mais invocações do comman ("gato" no exemplo acima).
fonte
você não está realmente executando sua linha de URL:
fonte
Parece que você poderia usar uma combinação das respostas aqui. Suponho que você queira substituir caracteres de espaço por seus valores ASCII de escape no URL. Para fazer isso, você precisa substituí-los por "% 20", não apenas "%". Aqui está uma solução que deve fornecer uma resposta completa:
Os backticks indicam que o comando incluído deve ser interpretado primeiro e o resultado enviado ao wget. Observe que eu escapei do espaço e% chars no comando sed para impedir que eles sejam mal interpretados. A opção -q para wget impede que a saída de processamento do comando seja impressa na tela (útil para scripts quando você não se importa com o status de trabalho) e a opção -O especifica o arquivo de saída. FYI, se você não quiser salvar a saída em um arquivo, mas apenas visualizá-la no terminal, use "-" em vez de um nome de arquivo para indicar stdout.
fonte
O wget também aceita stdin com o
-
switch.Se você deseja salvar a saída em um arquivo, use a
-O
opçãofonte