Seu script está substancialmente correto se não for pelo caractere $
que você precisa excluir e pelo nome do arquivo que você precisa repetir
for i in {1..16}; do
wget http://url/$i.jpg -O C:/Users/User/Desktop/Test/$i.jpg
done
De fato, a opção -O
pede para escrever o nome do arquivo e não o diretório.
-O file
--output-document=file
The documents will not be written to the appropriate files, but all will be concatenated together and written to file.
Algumas palavras mais
Na sua versão $wget
é uma variável nunca atribuída e tão vazia.
O resultado do comando dentro do ciclo torna-se, por exemplo,
http://url/1.jpg -O C:/Users/User/Desktop/Test/
que é um arquivo que não está presente no seu disco rígido.
Para investigar erros desse tipo, você pode adicionar um echo
na linha e ver a saída gerada pelo seu ciclo:
for i in {1..16}; do
echo $wget http://url/$i.jpg -O C:/Users/User/Desktop/Test/
done
revelará seu problema / erro.