Concaténation d'un fichier, n fois en Ksh

Résolu
ferrari75k -  
 ferrari75k -
Bonjour,

j'ai besoin de votre aide. J'aimerais faire un programme qui me concatene 1 fichier n fois, mais je n'y arrive pas . voici ce que j'ai fais :

NB= nombre de fois ou le fichier doit etre concatener

count=1
While [ $count -ne $NB ]
do
if [ $count -eq 1 ]
then
cat $OBJETSOURCE > $Temp
count="$(($count + 1))"
else
cat $OBJETSOURCE $Temp > $OBJETCIBLE
echo $count
count="$(($count + 1))"
fi

si quelqu'un peux m'aider ça serai vraiment gentil
Merci d'avance

18 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    # cat a
    ligne1
    # for i in $(seq 10);do cat a>>temp.txt;done
    # cat a
    ligne1
    # cat temp.txt
    ligne1
    ligne1
    ligne1
    ligne1
    ligne1
    ligne1
    ligne1
    ligne1
    ligne1
    ligne1
    #
    --
    lami20j
    1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    et avec >> :

    count=1
    While [ $count -ne $NB ]
    do
    cat $OBJETSOURCE >> $Temp
    count="$(($count + 1))"
    echo $count
    done 
    0
  3. ferrari75k
     
    Merci pour ta réponse,

    J'ai une erreur : Erreur de syntaxe : do imprevu!
    pourtant le code me semble correct!
    0
  4. ferrari75k
     
    Le problème de while résolu mais à l'éxecution dans le console ça m'écrit des choses à l'infini j'ai du l'arrêter avec CTRL+C, Vous avez une idée du problème?

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Vous avez une idée du problème?
    Peut être qu'on trouveras si tu nous affiche la commande que tu as tapé.
    0
  7. ferrari75k
     
    Merci beaucoup
    en executant ce programme de dubcek avec ./GenPDF2.ksh j'ai une boucle infini dans le console
    NCFICOBJI = Objet à concatener n fois

    count=1
    while [ $count -ne $NBDOC ]
    do
    cat $NCFICOBJI >> $Temp
    count="$(($count + 1))"
    echo $count
    done

    sinon en executant le programme que tu viens de proposer j'ai "seq: introuvable"
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    A tout hasard, est-ce que "$NBDOC" est défini au moins ?

    ;-))
    0
  9. ferrari75k
     
    Merci pour ta réponse, Oui $NBDOC est défini je le récupere à partir d'un fichier txt et je l'affiche avant d'écrire le script de concaténation et ça m'affiche le bon valeur
    0
  10. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Alors essaye :
    while [ $count -le $NBDOC ] 
    ;-))
    0
  11. ferrari75k
     
    je viens de tester, ça me fait une boucle infini :((, le problème viens de la commande cat puisque quand j'execute le script sans la commande cat :

    count=1
    while [ $count -ne $NBDOC ]
    do
    #cat $NCFICOBJI >> $Temp
    echo $count
    count="$(($count + 1))"
    done

    avec NBDOC à 3 ça m'affiche :

    1
    2
    0
  12. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Euh... il est gros ton fichier ?
    Insère une pause (sleep)...
    0
  13. ferrari75k
     
    la taille du fichier est 1,22 Mo (1 283 379 octets), comment je peux inserer une pause, enfaite je dois pouvoir le faire pour n'importe quelle fichier n fois, n peux etre tres grande :(( , genre 1millions :((((((((((((((((((((((((( mais même pour 2 fois ça marche pas, je viens de tester avec un objet plus petit 183 KB ça marche pas, le problème n'est pas la taille de l'objet :(
    0
  14. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaye comme ça alors :
    integer NBDOC=3
    integer count=1
    while ((count<=NBDOC))
    do
    cat $NCFICOBJI >> $Temp
    echo $count
    let count=count+1
    done
    ;-))
    0
  15. ferrari75k
     
    c'est exactement parreil, :((( ça me fait la même chose, quand vous essayez de le faire chez vous ça marche??
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Oui.

      Peut-être devrais-tu nous poster ton script dans son intégralité, ainsi que le contenu de ton répertoire...
      Essaie d'exécuter ton script en mode débogage (rajoute "set -xv" en tête de ton script, sous la ligne "shebang")
      0
  16. ferrari75k
     
    Merci pour vos propositions je repasserai cette après midi pour voir si vous avez d'autres script à me proposer
    0
  17. ferrari75k
     
    Merci de vos réponse je viens de tester avec ça :

    count=0
    while [ $count -ne $NB ]
    do
    cat $OBJETSOURCE >> $OBJETCIBLE
    echo $count
    count="$(($count + 1))"
    done

    et ça marche, je ne sais pas pourquoi ça marchait pas avant j'ai peut être fait une connerie :p
    :-))
    0
  18. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Happy for you ;-))
    0