Usando a variável date com wget --post-data [duplicate]

3
    

Esta pergunta já tem uma resposta aqui:

    

Para um projeto, quero usar o wget em um cron para baixar um arquivo de dados. Na instrução wget, uma data de início e término precisa ser definida no seguinte formato:

wget --post-data="stns=235&vars=TEMP&start=YYYYMMDDHH&end=YYYYMMDDHH"

Como eu quero que isso seja feito por um cron job, eu gostaria que a data inicial e final fosse definida automaticamente. Mais especificamente, gostaria que a data inicial fosse definida como "1 hora atrás" e a data final "agora".

Houve uma pergunta semelhante na postagem Usando data -1day com wget . Aqui a solução sugerida era colocar as variáveis entre aspas simples, mas isso não funcionou. Por exemplo:

"[...]start=''date -d yesterday +%Y%m%d%H'&end='date +%Y%m%d%H'"

Eu simplesmente recebi o erro "Erro 400: Pedido incorreto" ao tentar executar a instrução wget no terminal.

Obrigado.

    
por M. Duinkerken 22.03.2017 / 13:35

1 resposta

2

Dentro de uma tarefa cron, % é especial e deve ser de escape. Além disso, a sintaxe backquote é melhor evitada. Eu sugeriria algo como o seguinte:

wget --post-data="start=$(date ... +\%Y\%m\%d\%H)&end=$(date ... +\%Y\%m\%d\%H)&..."
    
por 22.03.2017 / 13:39