[bash] boucle wget

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. 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
    1. Contributeur
      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
      1. 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
        1. 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. 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
        2. Merci pour ton aide gnu je testerais ca soir
          0
          1. Contributeur
            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
            1. 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. Contributeur
                #!/bin/bash./
                i=1; while read -p "ID:" var && [[ -n $var ]];
                do mkdir dossier$i;
                wget -i http://url/$var;
                ((i++))
                done
                0
            2. J'ai l'erreur :

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

                Merci à tous !
                0