Faites une boucle sur une plage de nombres à télécharger avec wget

11

Comment puis-je écrire un script bash qui va faire ce qui suit:

URL = "example.com/imageID="
while (1..100)
   wget URL + $i #it will wget example.com/imageID=1, then 2, then 3, etc
done

J'ai donc un certain nombre de boucles à effectuer, une URL qui se termine par un numéro de la boucle. J'ai besoin de wgettout cela.

Szymon Toda
la source

Réponses:

19

si vous utilisez Bash 4.0, vous pouvez le faire:

wget example.com/imageId={1..100}.jpg
CC
la source
10

C'est assez facile, même pour quelqu'un avec peu d'expérience en programmation. En cas de doute, lisez toujours le manuel de Bash :

for i in {1..100}
do
    wget "example.com/imageID=$i"
done
Canha
la source
Par principe, vous devez joindre les $iguillemets:wget "example.com/imageID=$i"
Scott
cela fonctionne probablement très bien. cependant, je pars de "00008000" et le wget tire des erreurs car pour certains, il saute les quatre premiers zéros.
esaruoho
-1

Dans le cas où la variable n'est pas à la fin de l'URL et la variable se trouve entre les traits de soulignement:
example.com/imageID_1_2018.gif
example.com/imageID_2_2018.gif
example.com/imageID_3_2018.gif
.
.
.
example.com/imageID_100_2018.gif

wget example.com/imageID_{1..100}_2018.gif
de manière équivalente:
for ((i=1;i<=100;i++)); do wget example.com/imageID_${i}_2018.gif; done

Vassil
la source
3
Bienvenue dans Super User. Veuillez modifier votre réponse pour fournir plus de détails. Tout le monde ne lisant pas votre message peut comprendre comment il répond à la question du PO sans une explication plus détaillée.
Je dis Reinstate Monica
1
Je ne suis pas sûr que ce soit une réponse. Cela ressemble à une explication de la réponse acceptée (et pas très claire).
Scott