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
A voir également:

18 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
et avec >> :

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

J'ai une erreur : Erreur de syntaxe : do imprevu!
pourtant le code me semble correct!
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Vous avez une idée du problème?
Peut être qu'on trouveras si tu nous affiche la commande que tu as tapé.
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

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

;-))
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Alors essaye :
while [ $count -le $NBDOC ] 
;-))
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Euh... il est gros ton fichier ?
Insère une pause (sleep)...
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
ferrari75k
 
c'est exactement parreil, :((( ça me fait la même chose, quand vous essayez de le faire chez vous ça marche??
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
ferrari75k
 
Merci pour vos propositions je repasserai cette après midi pour voir si vous avez d'autres script à me proposer
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Happy for you ;-))
0
ferrari75k
 
c'est gentil, :---))))
0