Como posso direcionar automaticamente a saída de um script de download

1

Eu escrevi um script bem básico que me permite baixar um arquivo usando uma URL. Aqui está o meu script:

#!/bin/sh

# A script that downloads a file based on url

function filedl() {
  echo "What is the url for the file?"
  read FILEURL
  wget $FILEURL
  echo "Download complete"
}

filedl

O que eu gostaria de poder fazer é direcionar o arquivo baixado imediatamente após o download e movê-lo automaticamente para um diretório predefinido usando um comando ou função adicional no meu script.

Eu li alguns tópicos sobre como enviar uma saída para uma variável, mas não consigo descobrir como fazer isso com o meu script. Estes são os tópicos que li:

Eu tentei criar uma nova variável com algo como o seguinte, mas parece que não funcionou:

NEWFILE=$(wget $FILEURL)

Eu também tentei uma variação do meu script com essa modificação da chamada de função:

NEWFILE=$(filedl) < - Isso também não parece fazer nada.

Por fim, mudei meus comandos de uma função e listei cada comando com variações das tentativas de definição de variável que descrevi acima. Eu ainda não consegui descobrir como fazer isso.

Ainda sou muito novo no shell de scripts, então peço desculpas se estiver faltando algo que deveria ser óbvio.

    
por Paul Jacobson 21.12.2017 / 09:56

1 resposta

2

Em vez de capturar o arquivo em uma variável, colocando desnecessariamente a coisa toda na memória, use wget --output-document / -O flag e uma dessas duas variações:

wget -O /path/to/file ... http://example.com/foobar
wget -O - ... http://example.com/foobar > /path/to/file

... onde /path/to/file é qualquer caminho + nome do arquivo que você deseja. (E ... representa apenas quaisquer outros flags ou parâmetros que você possa estar usando.)

Ou, se quiser preservar o nome padrão do arquivo baixado, use --directory-prefix ou -P e apenas especifique o diretório no qual o arquivo deve ser salvo.

wget -P /some/path ... http://example.com/foobar
    
por 21.12.2017 / 10:11