# Script pour ajouter des espaces entre les lignes



## HImac in touch (28 Mai 2006)

Bonjour, j'essaye de faire d'effectuer des interlignes défini par moi meme dans un fichier texte et je vois qu'on peut le voir avec tetex ou latex , c koi ca , c'est un script shell  Linux ?? un logiciel ??

Je comprend pas trop


----------



## Alycastre (28 Mai 2006)

texlatex


----------



## HImac in touch (28 Mai 2006)

Alycastre a dit:
			
		

> texlatex




Merci beaucoup Alycastre pour cette précision donc en faite ce n'est pas du tout un script pour le terminal. Moi ce que je cherche en faite c'est qu'entre chaque ligne de texte je dise avec un script interligne ( dont je ne connais pas la syntaxe   ) , tu espaces entre ces 2 lignes, 3 lignes d'espaces vides par exemple.

Merci par avance


----------



## bompi (29 Mai 2006)

Si je comprends bien, tu veux transformer un contenu :
	
	



```
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccccc
```
en 
	
	



```
aaaaaaaaaaa



bbbbbbbbbbb



ccccccccccccc
```
 ?


----------



## HImac in touch (29 Mai 2006)

bompi a dit:
			
		

> Si je comprends bien, tu veux transformer un contenu :
> 
> 
> 
> ...


 

Oui voilà exactement j 'aimerais faire ça, je prend un fichier texte au hasard, et je lui dis que entre chaque ligne de texte il y ait 1 ou 2 ou 3 etc.... lignes d'espace vide.  Comment t'as fait ça bompi ?? avec un script shell ?? tu peux me passer la syntaxe s'il te plaît ?


----------



## bompi (29 Mai 2006)

J'ai juste tapé des caractères ... 
En fait, un petit script en PERL devrait faire l'affaire.


----------



## HImac in touch (29 Mai 2006)

bompi a dit:
			
		

> J'ai juste tapé des caractères ...
> En fait, un petit script en PERL devrait faire l'affaire.


 
Et tu ne saurais pas où je peux trouver ça s'il te plait ? Parce que je suis super nul en prog PERL   

Merci par avance


----------



## bompi (29 Mai 2006)

Bon, je viens d'écrire un petit script (pas bien génial mais lisible) qui paraît fonctionner correctement. Tu l'enregistre sous un certain nom (chez moi : "inter.pl") tu lui changes ses attributs pour qu'il soit exécutable (dans le Terminal : "chmod 755 inter.pl").
	
	



```
#!/usr/bin/perl

use strict;

sub usage {
    print "Usage: $0 <input file> <output file> [number of lines]\n";
    print "       number of lines is optional, defaulting to 2\n";
    exit;
}

if (@ARGV < 2) {
    usage();
}

my $zeINPUT = $ARGV[0];
my $zeOUTPUT = $ARGV[1];
my $zeNUMBER = (@ARGV == 3) ? $ARGV[2] : 2;

open (FILEIN, "< $zeINPUT") or die "unable to open $zeINPUT for reading";
open (FILEOUT, "> $zeOUTPUT") or die "unable to open $zeOUTPUT for writing";

my $i = 0;
while (<FILEIN>){
    if ($i == 0){
        $i++
    }
    else{
        for (my $j = 0; $j < $zeNUMBER; $j++) {
            print FILEOUT "\n";
        }
    }
    print FILEOUT $_;
}

close FILEIN ;
close FILEOUT ;
```


----------



## HImac in touch (29 Mai 2006)

bompi a dit:
			
		

> Bon, je viens d'écrire un petit script (pas bien génial mais lisible) qui paraît fonctionner correctement. Tu l'enregistre sous un certain nom (chez moi : "inter.pl") tu lui changes ses attributs pour qu'il soit exécutable (dans le Terminal : "chmod 755 inter.pl").
> 
> 
> 
> ...


 


Oh merci beaucoup  , par contre j'arrive pas à voir sur quel ligne ou je dois mettre le nombre de lignes que je veux faire sauter pour que chaque ligne de texte ?


----------



## bompi (29 Mai 2006)

Allez ! Un effort  !
Le nombre de lignes est par défaut "2" et pour le changer tu le passes en paramètre.
Genre 
	
	



```
./inter.pl in.txt out.txt 4
```
 pour intercaler 4 lignes entre chaque ligne du fichier "in.txt" et pour écrire le résultat dans "out.txt".
Note : ne pas prendre le même fichier en entrée et en sortie.


----------



## HImac in touch (29 Mai 2006)

bompi a dit:
			
		

> Allez ! Un effort  !
> Le nombre de lignes est par défaut "2" et pour le changer tu le passes en paramètre.
> Genre
> 
> ...


 

OOOOOOOOOOOOOOOOOOH ok , j'avais presque compris mais justement je comprenais pas pourquoi tu avais écris number of line , je croyais que c'était à l intérieur du script , j 'avais bien vu le 2 d'en dessous mais je croyais qu 'il fallait pas le changer vu qu'il était optionnel. 

Merci beaucoup je vais réessayer ça ce soir, vu que là je suis sur Windaube  . Et je te dis les résultats dès que j'y suis. Merci beaucoup.  


Et sinon toi ça va ??


----------



## tatouille (29 Mai 2006)

voila tu peux donc rajouter des line feed
si tu as perl sous windows ca marche aussi 

pour info Latex et autres se sont des Markup Languages
cela te permet de mettre en forme

comme le richtext le html ecetera


----------



## bompi (29 Mai 2006)

Et surtout leur papa à tous, le SGML.


----------



## HImac in touch (29 Mai 2006)

bompi a dit:
			
		

> Et surtout leur papa à tous, le SGML.


 

Mini question éclair , c'est quoi déjà qu'est utiliser sur le terminal de Mac OS X donc de Linux? :rose: :rose: Le bash ou le perl ?


----------



## FjRond (29 Mai 2006)

HImac in touch a dit:
			
		

> Mini question éclair , c'est quoi déjà qu'est utiliser sur le terminal de Mac OS X donc de Linux? :rose: :rose: Le bash ou le perl ?


Par défaut, sur 
=> Puma (10.1) et  Jaguar (10.2) : tcsh;
=> Panther (10.3) et Tiger (10.4) : bash.
Mais on peut modifier son shell personnel, puisqu'ils sont installés avec le système. Personnellement, j'utilise zsh.
Pour LaTeX, voir ceci  .


----------



## tatouille (29 Mai 2006)

non LA console ne veut pas dire linux

osx est une BSD (Berkeley software Distribution )

le language de script est un shell (coquillage)
il en existe différentes espèces

sous Panther et Tiger le shell par défault est un Bourne-shell

BASH -> Bourne shell again



PS : sorry double post je n'avais pas vu


----------



## HImac in touch (29 Mai 2006)

FjRond a dit:
			
		

> Par défaut, sur
> => Puma (10.1) et Jaguar (10.2) : tcsh;
> => Panther (10.3) et Tiger (10.4) : bash.
> Mais on peut modifier son shell personnel, puisqu'ils sont installés avec le système. Personnellement, j'utilise zsh.
> Pour LaTeX, voir ceci  .


 

Oki merci donc c'est bien en bash je vais le fair et non en Perl   , merci , car je commançais à m'embrouiller sérieux avec tout ces codes XD.


----------



## HImac in touch (30 Mai 2006)

Je comprend pas là , je dois avoir louper un truc, j'ai écris ca ( en bash ) sur mon terminal, il me met Commande éxécuté mais je trouve le fichier nul part ?? Pourtant j 'ai bien créé toto.rtf sur le bureau et j 'ai mis plein de lignes pleines. J'avoue que je comprend pas là ?_? . Quelqu'un pour éclairer ma lanterne ? 


```
#!/bin/bash

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto.rtf> <toto2.rtf> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    echo $line
    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
        echo "\n"
    done 
done < $zeINPUT >$zeOUTPUT
```


----------



## bompi (30 Mai 2006)

J'ai un peu l'impression d'avoir perdu du temps, là, non ? 
À part ça, tu as deux erreurs :
1) remplacer 
	
	



```
zeOUPUT=$2
```
 par 
	
	



```
zeOUTPUT=$2
```
2) remplacer 
	
	



```
echo "\n"
```
 par 
	
	



```
echo ""
```


----------



## bompi (30 Mai 2006)

Tiens, au passage : tu devrais peut-être veiller à ne pas mettre d'interlignes à la fin du fichier, ça paraît plus chic.


----------



## HImac in touch (30 Mai 2006)

bompi a dit:
			
		

> J'ai un peu l'impression d'avoir perdu du temps, là, non ?
> À part ça, tu as deux erreurs :
> 1) remplacer
> 
> ...


Bé non t'a spas perdu ton temps la preuve la j'apprend avec toi ^^. 

Eh eh Monsieur je comprend pas ça marche toujours pas et pourtant tout est bien écrit :rose: :rose: :rose:


----------



## bompi (30 Mai 2006)

Comment lances-tu le bazar ?


----------



## HImac in touch (30 Mai 2006)

bompi a dit:
			
		

> Comment lances-tu le bazar ?




Bah je lance le terminal, je fais un copier coller du prog que j'ai fait à partir d'un traitement de texte, je colle dans le terminal et sans que je n'ai appuyé sur entrée il me met Commande éxécutée.

Mais je pense qu'il ne lit pas tout mon programme car dès que j'écris fi il me met logout opération terminée alors qui lui reste encore du script a faire.


----------



## bompi (30 Mai 2006)

Bon. Fais-en un fichier ("inter.sh", par exemple), puis passe-le en mode exéctable ("chmod 755 inter.sh"), enfin, lance-le avec ses paramètres.
Sinon, ça ne marchera jamais ...


----------



## HImac in touch (30 Mai 2006)

bompi a dit:
			
		

> Bon. Fais-en un fichier ("inter.sh", par exemple), puis passe-le en mode exéctable ("chmod 755 inter.sh"), enfin, lance-le avec ses paramètres.
> Sinon, ça ne marchera jamais ...




J'ai fait ça 


```
#!/bin/bash

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto.rtf> <toto2.rtf> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    echo $line
    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
printf "     %s\n"
#       # echo "\n"
    done 
done < $1 >$2
```


J'ai mis ensuite dans le terminal ca 

chmod +x toto.sh

puis ca 

toto.sh toto.rtf toto2.rtf 4

et il me met toto.sh  command not found , je comprend pas vraiment là


----------



## bompi (31 Mai 2006)

Sur les systèmes Unix, par défaut, on ne met plus '.' dans le chemin. Ce qui fait que : soit toto.sh est dans les chemins fournis par la variable PATH, soit tu l'appelles avec son chemin complet (absolu ou relatif). Dans ton cas, il devrait suffire de l'invoquer ainsi :
	
	



```
./toto.sh toto.rtf toto2.rtf 4
```


----------



## FjRond (31 Mai 2006)

Ou bien créer un répertoire ~/bin dans sa maison dans lequel se trouvent les scripts, et ajouter ces lignes à ~/.profile :

```
PATH=${HOME}/bin:$PATH
export PATH
```
Comme cela, les scripts s'exécutent partout comme des commandes de Terminal.


----------



## HImac in touch (31 Mai 2006)

Ca y est j'ai tout fait ce que vous m'avez dit MAIS j'ai une erreur de script  


```
#!/bin/bash

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto.rtf> <toto2.rtf> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    echo $line
    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
printf "     %s\n"
#       # echo "\n"
    done 
done < $1 >$2
```
puis chmod +x toto.sh 

et ./toto.sh toto.rtf toto2.rtf 4 

ET IL ME MET UNE ERREUR 


```
./toto.sh: line 1: {rtf1macansicpg10000cocoartf824cocoasubrtf380: command not found
./toto.sh: line 2: syntax error near unexpected token `}'
./toto.sh: line 2: `{\fonttbl\f0\fnil\fcharset77 Monaco;}'
```
Le seul truc que j'ai compris c'est qu'apparemment il manque une } mais y'en a pas   

Help .
Et si je pouvais le finir ce soir , je serais trop content


----------



## molgow (31 Mai 2006)

Il me semble que certains éditeurs de texte tel que BBEdit permettent de rechercher/remplacer des patterns comme \n (retour à la ligne). Si tel est le cas, il suffit de faire rechercher \n et remplacer par \n\n\n\n.


----------



## tatouille (31 Mai 2006)

TextWrangler est free et tu peux utiliser  l'option grep aussi
personellement j'utilise  beaucoup TextWrangler et vim


----------



## HImac in touch (31 Mai 2006)

molgow a dit:
			
		

> Il me semble que certains éditeurs de texte tel que BBEdit permettent de rechercher/remplacer des patterns comme \n (retour à la ligne). Si tel est le cas, il suffit de faire rechercher \n et remplacer par \n\n\n\n.




Bah oui mais si je fais ca ca fait que changer manuellement et je veux pouvoir changer juste au niveau des parametres.

En faite je suis sur Mac là et j'utilise TextEdit pour faire mon toto.sh , c'est grave ?? 


Vous voyez ou est le probleme ?


----------



## bompi (31 Mai 2006)

Oui car ton fichier 'toto.sh' a été enregistré comme fichier au format RTF. Il te faut préciser dans Textedit d'éditer le fichier comme un fichier texte.

Par ailleurs, je ne discute pas le bien fondé de l'entreprise mais ajouter des lignes supplémentaires au milieu de balises RTF, je ne sais pas si c'est au poil (_cf._ tes fichiers d'exemple).


----------



## HImac in touch (31 Mai 2006)

bompi a dit:
			
		

> Oui car ton fichier 'toto.sh' a été enregistré comme fichier au format RTF. Il te faut préciser dans Textedit d'éditer le fichier comme un fichier texte.
> 
> Par ailleurs, je ne discute pas le bien fondé de l'entreprise mais ajouter des lignes supplémentaires au milieu de balises RTF, je ne sais pas si c'est au poil (_cf._ tes fichiers d'exemple).




Je ne comprend pas , je dois l'enregistrer en tant que fichier rtf ?? bah il est déjà en RTF   , j'ai juste changer l'extension en .sh . Je ne comprend pas trop  Désolé :rose:


----------



## FjRond (31 Mai 2006)

HImac in touch a dit:
			
		

> Vous voyez ou est le probleme ?


C'est bizarre, car le script fonctionne très bien chez moi, sur des .txt, il est vrai.
C'est d'ailleurs pour cela que je ne travaille que sur du texte pur, que je mets ensuite en forme avec LaTeX. Le .rtf, le .doc etc posent plein de problèmes quand on veut utiliser les commandes de Terminal, puisqu'ils ne contiennent pas seulement le texte, mais le codage de mise en forme.


----------



## HImac in touch (31 Mai 2006)

FjRond a dit:
			
		

> C'est bizarre, car le script fonctionne très bien chez moi, sur des .txt, il est vrai.
> C'est d'ailleurs pour cela que je ne travaille que sur du texte pur, que je mets ensuite en forme avec LaTeX. Le .rtf, le .doc etc posent plein de problèmes quand on veut utiliser les commandes de Terminal, puisqu'ils ne contiennent pas seulement le texte, mais le codage de mise en forme.




J'utilise quoi alors pour avoir du .txt , quel petit logiciel ??
    pour Mac


----------



## bompi (31 Mai 2006)

Hum ...
Textedit écrit par défaut des fichiers au format RTF, sauf si on change ce défaut.
L'extension ne fait rien à l'affaire, c'est juste le codage. C'est dans les préférences, pour "New document", que ça se décide.
Si tu fais un 'cat toto.sh' tu pourras constater ce que je te dis.

Pour éditer, tu as donc Textedit, TextWrangler, SMultron, JExt, JEdit etc. Tous gratuits.


----------



## HImac in touch (31 Mai 2006)

CA MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARCHE MERCI MERCI MERCI MERCI BOMPI  . Mais je pense à un petit truc :rose: :rose: tout minus, comment je fais si le fichier de destination existe deja , j'aurais voulu le faire choisir entre soit décider de l'écraser soit ne rien faire :rose: :rose: s'il te plait.


----------



## bompi (31 Mai 2006)

Il te faut ajouter un code du genre :

```
if [ -f "$2" ] ; then
  echo "Overwrite $2 (y/n)";
  read -r -e overwrite
  if [ "$overwrite" != "y" ] ; then
    exit 1;
  fi;
fi
```


----------



## HImac in touch (1 Juin 2006)

bompi a dit:
			
		

> Il te faut ajouter un code du genre :
> 
> ```
> if [ -f "$2" ] ; then
> ...



Ca marche aussi tu cartonnes trop, bravo, je vais voir demain si je peux l'améliorer encore un peu, mais ca m'a donné envie de programmer en Bash . J'ai un excellent professeur aussi ^^. Allez bonne nuit à demain ^^


----------



## belzebuth (1 Juin 2006)

si c'est pas malheureux...un beau titre de sujet qui pourrait attirer les badaux vers LaTeX se retrouve pollué par vous... Changer moi ce titre tout de suite avant que plus de gens ne fuient!!!


----------



## HImac in touch (1 Juin 2006)

belzebuth a dit:
			
		

> si c'est pas malheureux...un beau titre de sujet qui pourrait attirer les badaux vers LaTeX se retrouve pollué par vous... Changer moi ce titre tout de suite avant que plus de gens ne fuient!!!




Lol bah j 'ai eu ma réponse dès le début donc ^^, on est passé à la chose que je voulais, le développement bash


----------



## bompi (1 Juin 2006)

C'est vrai que ce n'est plus très LaTeX, tout ça !
Il reste que l'on peut demander au modérateur de changer le titre pour un plus approprié, sans prendre de grands airs offusqués


----------



## tatouille (1 Juin 2006)

bompi a dit:
			
		

> C'est vrai que ce n'est plus très LaTeX, tout ça !
> Il reste que l'on peut demander au modérateur de changer le titre pour un plus approprié, sans prendre de grands airs offusqués


oui C'est loin du LaTex
 avec le Bash

 ce google-image vraiment 

je propose

ajouter des Line feed... (CR - LF) ?  si windows


----------



## HImac in touch (1 Juin 2006)

Mdr Tatouille ^^, j'aurais un nouveau petit service à vous demander si c'était possible s'il vous plaît  :rose: :rose: .

J'aurais un nouveau défi à vous soumettre si cela était possible, s'il vous plaît, c'est si jamais j'entre des paramètres mauvais, comme oublie d'écrire le fichier de destination, nombre de ligne à sauter négatif, etc... que Terminal écrive dans ce modèle là s'il vous plait. :rose: 

usage : interligne fichier_source fichier_destination interligne 

Mais si par contre le nombre de ligne demandé en paramètre est de 0 que cela enlève toutes les lignes vides du texte ?

C'est possible j'espère :rose: :rose:  . Merci par avance


----------



## tatouille (1 Juin 2006)

ca devient chiant mais c'est possible je te montre ça demain


----------



## HImac in touch (1 Juin 2006)

tatouille a dit:
			
		

> ca devient chiant mais c'est possible je te montre ça demain




Oki merci beaucoup pas de problèmes


----------



## tatouille (2 Juin 2006)

HImac in touch a dit:
			
		

> Oki merci beaucoup pas de problèmes


je t'ai pas oublié mais j'ai bossé comme un ane today
je me remet dans ton truc là


----------



## HImac in touch (2 Juin 2006)

tatouille a dit:
			
		

> je t'ai pas oublié mais j'ai bossé comme un ane today
> je me remet dans ton truc là




Oki merci


----------



## tatouille (2 Juin 2006)

```
#!/bin/bash

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto.rtf> <toto2.rtf> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    if [ $zeNUMBER = "0" ]
    then
        echo $line | tr -d "\n"
        printf "%s"    
    else
        echo $line
    fi
    
    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
        printf "     %s\n"
    done
    
done < $1 >$2
```
c'est pas top mais je reste dans ce que tu as déjà
tu pourrais ajouter un param 

cr lf crlf

ca permeterait de rendre la rountine drole
et des choses comme crlf 2 lf
cr to lf
lf to cr


----------



## HImac in touch (2 Juin 2006)

tatouille a dit:
			
		

> ```
> #!/bin/bash
> 
> if [ $# -lt 2 ]
> ...




Désolé tatouille , j'ai compris le code que tu as écrit mais pas les cf lf crlf , crlf 2 lf    . Est ce que tu pourrais m'expliquer à quoi ils servent et où je devrais les placer s'il te plaît ?


----------



## tatouille (2 Juin 2006)

http://en.wikipedia.org/wiki/CRLF

c'est cool en bas de page il y a les réponses
je n'avais pas vu 

comme cela sera + facile pour toi


----------



## HImac in touch (2 Juin 2006)

tatouille a dit:
			
		

> http://en.wikipedia.org/wiki/CRLF
> 
> c'est cool en bas de page il y a les réponses
> je n'avais pas vu
> ...




Euh oui mais c'est pour écrire en C   . J'ai trop de mal là je crois :rose:


----------



## tatouille (2 Juin 2006)

HImac in touch a dit:
			
		

> Euh oui mais c'est pour écrire en C   . J'ai trop de mal là je crois :rose:


non les exemples avec tr et sed


----------



## HImac in touch (2 Juin 2006)

tatouille a dit:
			
		

> non les exemples avec tr et sed




oh oui j'ai vu mais c'est quoi le rapport entre ça et que j'aimerais faire ??

(Désolé, je dois vraiment être nul en faite    )


----------



## HImac in touch (3 Juin 2006)

T'es parti en vacances ??    J'ai toujours pas trouvé :rose: :rose:  .

Help


----------



## belzebuth (3 Juin 2006)

bon moi je demande un changement de titre!


----------



## HImac in touch (3 Juin 2006)

belzebuth a dit:
			
		

> bon moi je demande un changement de titre!




Mais t'arrêtes Belzébuth là  , franchement ça rime à quoi  , envoie un mp à un modo si ca te pose des problèmes de conscience  :mouais: 


Tatouille j'ai mis tout ce code dans mon toto.sh mais il me dit rien quand je met un un nombre d'interlinges négatif ou que j'oublie de dire le fichier de destination ou de source   . . Merci . Parce que je dois montrer ça à un pote demain soir :S :S :rose: donc c'est assez préssé :rose: s'il te plaît :rose:


#!/bin/bash

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto1.txt> <toto2.txt> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    echo $line
    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
printf "     %s\n"
#       # echo "\n"
    done 
done < $1 >$2

if [ -f "$2" ] ; then
  echo "Remplacer $2 (o/n)";
  read -r -e remplacer
  if [ "$remplacer" != "o" ] ; then
    exit 1;
  fi;
fi

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto.rtf> <toto2.rtf> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    if [ $zeNUMBER = "0" ]
    then
        echo $line | tr -d "\n"
        printf "%s"    
    else
        echo $line
    fi

    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
        printf "     %s\n"
    done

done < $1 >$2


----------



## tatouille (4 Juin 2006)

regarde ici tatouille à l'oeuvre tu auras acces à ce que tu as besoin le test des params



sinon regarde ici

http://www.labo-linux.org/cours/module-1/chapitre-11-scripting-bash/

on t'a mis le pied à l'étrier il est temps que tu voles de tes propres ailes

AIDE-TOI ET LA COMMUNAUTÉ T'AIDERA

on ne code pas pour épater les copains sauf quand on maîtrise et que l'on est fier 
d'un traitement Object tout mignon super compacte pure quoi 
et là on appel ses cops hé regarde ça tue  mais on ne demande pas à un autre
de l'écrire à sa place puis de faire le fanfaron


----------



## HImac in touch (4 Juin 2006)

tatouille a dit:
			
		

> regarde ici tatouille à l'oeuvre tu auras acces à ce que tu as besoin le test des params
> 
> 
> 
> ...




Ok :rose: :rose: , j'ai retenu la lecon Maitre Tatouille   , et pour montrer comment j'ai compris , j'ai trouvé une erreur tout seul  . 

Dans cette partie : 
	
	



```
if [ -f "$2" ] ; then
  echo "Remplacer $2 (o/n)";
  read -r -e remplacer
  if [ "$remplacer" != "n" ] ; then
    exit 1;
  fi;
fi
```

Que je mette oui ou non il m'effectue le changement de nombre d'interlignes   

et là je ne comprend pas comment tu peux dire que l'argument que tu as écrit est négatif puisqu'on lui a écrit que c'était compris entre 3 et 0   



```
zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:0}

	while read line
	do
    		echo $line
    	for (( i=1 ; i <= $zeNUMBER ; i++ ))
    	do
printf "     %s\n"
#       # echo "\n"
    done 
done < $1 >$2
```


----------



## tatouille (4 Juin 2006)

bah réflechi 

si pas dans mon range alors ->stderr
tu dois aussi penser que ton arg doit etre un integer

// Que je mette oui ou non il m'effectue le changement de nombre d'interlignes

indice :
en bash c'est souvent le cas lorsqu'il y a une erreur le test est toujours vraie


----------



## HImac in touch (4 Juin 2006)

tatouille a dit:
			
		

> bah réflechi
> 
> si pas dans mon range alors ->stderr
> tu dois aussi penser que ton arg doit etre un integer
> ...




Pour stderr ok , je veux dire que si zeNUMBER != au chiffre que j'ai rentré qu'il mette echo "Veuillez entrer un nombre d'arguments correct" mais je sai spas avec quoi faire la comparaison. Je sais pas comment l'écrire.

Et pour le test qu'est toujours vrai , j'ai essayé de remplacer par non dans la condition mais ca marche toujours , je vois vraiment pas pourquoi ca marche a chaque fois


----------



## bompi (4 Juin 2006)

Une nouvelle version (mais je n'ai pas remis la suppression des lignes vides).

```
#!/bin/bash

#
# Usage
#
usage ()
{
    echo "$0 [-f|-r|-n <number>] source destination"
    echo "    -f          : if not set the script won't overwrite an"
    echo "                  existing destination file "
    echo "    -n <number> : set the number of blank lines to add must be"
    echo "                  a strictly positive integer. This is optional"
    echo "                  and default is 2"
    exit 0
}

#
# Test whether the value is a strictly positive integer.
#
testNumber()
{
    echo $1 | grep "^[1-9][0-9]*$" > /dev/null 2>&1
    if [ "$?" -eq "0" ]; then
        return 0
    else
        return 1
    fi
}

#=============================================================================

# First, let's initialize vars

zeERASE="n"
zeNUMBER=2

# Then read the options ...

while getopts :hfn: c
do
    case $c in
        h)    usage $0
            ;;
        f)    zeERASE="y"
            ;;
        n)  zeNUMBER=$OPTARG
            ;;
        \?)    $ECHO "Unknown option [$c] : ignored."
            usage $0
            ;;
        esac
done
shift `expr $OPTIND - 1`

# ... and test them

if ! testNumber "$zeNUMBER" ; then
    usage $0
fi

# Then check the parameters ...

if [ $# -lt 2 ]
then
    usage $0
fi

zeINPUT=$1
zeOUTPUT=$2

# ... and test them

if [ ! -f $zeINPUT ]; then
    printf "\nSource doesn't exist ...\n\n"
    usage $0
fi

if [ -f $zeOUTPUT ]; then
    if [ "$zeERASE" != "y" ]; then
        printf "\nDestination already exists ; use '-f' to overwrite\n\n"
        usage $0
    fi
fi

# Now everything is defined, let's start !
zeCOUNT=0
while read line
do
    if [ $zeCOUNT -ne 0 ]; then
        for (( i=1 ; i <= $zeNUMBER ; i++ )); do
            echo ""
        done
    else
        zeCOUNT=1
    fi
    echo $line
done < $zeINPUT > $zeOUTPUT
```


----------



## HImac in touch (4 Juin 2006)

Merci à tous , j'ai réussi enfin à le faire ce truc ^^, c'est vraiment super sympa de votre part, ca marche du tonerre, merci infinniement pour votre amabilité et votre gentillesse, c'est vraiment super super sympa.

Encore merci     

Spécial Merci pour Bompi et tatouille


----------



## molgow (6 Juin 2006)

belzebuth a dit:
			
		

> bon moi je demande un changement de titre!



J'ai changé le titre qui ne voulait effectivement plus rien dire


----------



## Bilbo (7 Juin 2006)

Quand je pense qu'il y en a qui pensent que c'est au Bar qu'on trouve les fils d'antologie.   

À+


----------



## tatouille (7 Juin 2006)

Bilbo a dit:
			
		

> Quand je pense qu'il y en a qui pensent que c'est au Bar qu'on trouve les fils d'antologie.
> 
> À+


tu veux une bash


----------



## bompi (7 Juin 2006)

C'est vrai que je me suis fendu d'un script en PERL et d'un autre en bash ... Pfff... quel suée !!


----------



## HImac in touch (7 Juin 2006)

tatouille a dit:
			
		

> tu veux une bash




Trop bon 






			
				bompi a dit:
			
		

> C'est vrai que je me suis fendu d'un script en PERL et d'un autre en bash ... Pfff... quel suée !!



:rose::rose: Merci mon piti bompi :rose::rose:


----------



## tatouille (7 Juin 2006)

et bah mon poutou bompi 

je crois quee tu peux payer un coup à BOMPI
J'AURAIS PLUTOT RENOMMÉ en "Sauver Willy" 

mais bon les jneus pourquoi vous paniquez lorsque vous avez à faire un chti truc
la bonne méthodes c'est de bien faire l'inventaire de ce que l'on veut

une fois la démarche logique accomplie on peut commencer à écrire quelque 
chose sereinement sans crier au secours


----------



## molgow (7 Juin 2006)

Il faudra bientôt ouvrir un "Bar développeur" si ça continue


----------

