Você pode usar backticks (') para avaliar um comando e substituir na saída do comando, como:
echo "Number of files in this directory: 'ls | wc -l'"
No seu caso:
wget 'echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g''
Então, eu tenho um script que, quando eu der dois endereços, pesquisará dois links HTML:
echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'
Eu 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
você não está realmente executando sua linha de URL:
#!/bin/sh
url="$(echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g')"
wget $url
Você pode usar "xargs". Um exemplo trivial:
ls -1 *.c | sort -n | xargs cat
Você teria que tomar cuidado para que xargs não dividisse seu stdin em duas ou mais invocações do comman ("cat" no exemplo acima).
Parece que você poderia usar uma combinação das respostas aqui. Eu estou supondo que você está querendo substituir os caracteres de espaço com 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:
$ wget 'echo http://maps.google.be/maps\?saddr\=$1\&daddr\=$2 | sed -e 's/\ /\%20/g'' -q -O temp.html
Os backticks indicam que o comando incluído deve ser interpretado primeiro e o resultado enviado para wget. Observe que escapei do espaço e% chars no comando sed para evitar que eles sejam mal interpretados. A opção -q para wget impede que o resultado do processamento do comando seja impresso na tela (útil para o script quando você não se importa com o status do 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á-lo no terminal, use "-" em vez de um nome de arquivo para indicar stdout.
wget também aceita stdin com a opção -
.
Se você quiser salvar a saída em um arquivo, use a opção -O
.
echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g' | wget -i- -O temp.html
Tags command-line bash shell