Não faça o download do arquivo com o curl se o arquivo já existir localmente

0

Eu estou fazendo atualmente com o curl:

curl https://example.com/file -o file

Se eu já tiver um arquivo chamado file em meu diretório, ele será substituído por esse comando. Em vez disso, gostaria de retornar uma mensagem de erro informando que o arquivo já existe.

É possível fazer isso apenas usando o curl? Eu não vi um sinalizador para fazer isso e não estou executando o comando em um script bash, portanto, não posso usar um operador de comparação antes de executar o comando.

    
por Armand Grillet 06.02.2018 / 16:11

1 resposta

4

O teste para a existência de um nome em um diretório pode ser feito com o -e test:

if [ -e "filename" ]; then
    echo 'File already exists' >&2
    exit 1
fi

curl -o "filename" "URL"

Se você não quiser encerrar o script nesse ponto:

if [ -e "filename" ]; then
    echo 'File already exists' >&2
else
    curl -o "filename" "URL"
fi

O teste será verdadeiro se o nome existir, independentemente de o nome ser de um arquivo, diretório, pipe nomeado ou outro tipo de objeto de sistema de arquivos comum.

Veja man test no seu sistema.

    
por 06.02.2018 / 16:17

Tags