[bash] boucle wget

Laurane85 Messages postés 7 Statut Membre -  
Laurane85 Messages postés 7 Statut Membre -
Bonjour

J'ai fait un script qui permet de télécharger un fichier via une variable $var en faisant

#!/bin/bash
echo -e "ENTRER le sufixe de l'URL : "
read var
wget -i [http://127.0.0.1/]$var
mkdir caca
mv $var caca/


Cela fonctionne bien mais je voudrais améliorer le truc en permettant de rentrer plusieurs fois un suffixe pour télécharger a la suite et mettre le premier suffixe télechargé dans le dossier caca/, le second suffixe dans un dossier caca2/ etc

Et en disant au bout d'un certain nombre de téléchargements de dire STOP pour que le script fasse le travail

Quelqu'un aurait une idée?

Merci de votre aide

10 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Il me paraît plus simple d'utiliser l'option -O pour dire à wget où écrire le fichier une fois le répertoire de destination créé.

    Ensuite pour répondre à ton problème, il suffit d'écrire un script shell capable de lire n paramètres d'entrées :
    https://forums.commentcamarche.net/forum/affich-37619992-bash-les-arguments-parametres

    Bonne chance
    0
  2. Laurane85 Messages postés 7 Statut Membre
     
    Ok merci pour ta réponse
    Pour le wget -O pas de problème par contre pour la boucle je galère si vous avez une idée je suis preneur
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    exemple de boucle, on termine avec une réponse vide
    i=1; while read -p "ENTRER le sufixe de l'URL : " var && [[ -n "$var" ]]; do wget -O fichier$((i++)) http:/xxx/$var; done
    0
  4. Utilisateur anonyme
     
    ou encore :

    #!/bin/bash
    while [ "$#" -gt 0 ];do echo "wget http://$1"; shift; done


    $./sc.sh placard maison singe
    wget http://placard
    wget http://maison
    wget http://singe
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Laurane85 Messages postés 7 Statut Membre
     
    Merci pour l'aide les gars

    Mais comment je peux intégrer une boucle sur la creation de plusieurs dossiers après avoir telecharger mes fichiers des differentes urls

    Exemple : fichier1 telechargé va dans le dossier1
    Fichier dans dossier2
    Etc

    Merci pour l'aide
    0
    1. gnu
       
      En reprenant le code de dubcek et en ajoutant un mkdir dossier
      i=1; 
      while read -p "ENTRER le suffixe de l'URL : " var && [[ -n "$var" ]];
      do
      mkdir dossier$i
      wget -O dossier$i/fichier$i "http:/xxx/$var"
      i=$((i++))
      done


      Problèmes éventuels : les téléchargements vont s'effectuer un à un, l'un après l'autre ; pas de test si problème de création du dossier et/ou du fichier, rien de prévu si le wget échoue ; etc.
      0
  7. Laurane85 Messages postés 7 Statut Membre
     
    Merci pour ton aide gnu je testerais ca soir
    0
  8. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Parfois il existe des outils tout en un, il suffit juste de se pencher dans les pages de man.
    cURL
    peut faire bien mieux que
    wget
    ;-)

    $ ls

    $ curl -n ftp://xxxxxx.fr/Test/[1-3].png --create-dirs -o "rep#1/#1.png"

    [1/3]: ftp://xxxxxx.fr/Test/1.png --> rep1/1.png
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 209k 100 209k 0 0 507k 0 --:--:-- --:--:-- --:--:-- 506k

    [2/3]: ftp://xxxxxx.fr/Test/2.png --> rep2/2.png
    100 124k 100 124k 0 0 342k 0 --:--:-- --:--:-- --:--:-- 342k

    [3/3]: ftp://xxxxxx.fr/Test/3.png --> rep3/3.png
    100 202k 100 202k 0 0 500k 0 --:--:-- --:--:-- --:--:-- 500k

    $ tree
    .
    |-- rep1
    | `-- 1.png
    |-- rep2
    | `-- 2.png
    `-- rep3
    `-- 3.png

    3 directories, 3 files



    ;-))

    0
  9. Laurane85 Messages postés 7 Statut Membre
     
    malgré ton script gnu- j'ai toujours pas réussi.

    #!/bin/bash./
    i=1; while read -p ID: var && [[ -n $var ]]; do mkdir dossier$i; wget -i http://url/$var; i=$((i++))
    done

    Au bout du second téléchargement j'ai le message :

    ") erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est "
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      #!/bin/bash./
      i=1; while read -p "ID:" var && [[ -n $var ]];
      do mkdir dossier$i;
      wget -i http://url/$var;
      ((i++))
      done
      0
  10. Laurane85 Messages postés 7 Statut Membre
     
    J'ai l'erreur :

    ./test.sh: ligne 3: erreur de syntaxe près du symbole inattendu « $'\r' »
    '/test.sh: ligne 3: `((i++))
    0
  11. Laurane85 Messages postés 7 Statut Membre
     
    j'ai remplacé par : let i=$((i++))
    ca a l'air de faire le taff

    Merci à tous !
    0