Shell script : besoin d'aide !

Résolu/Fermé
momsse - 2 mai 2007 à 17:43
 ayman - 5 déc. 2007 à 17:26
Salut à tous,

Je m'enmele un peu les pinceaux en shell-script, je bug sur l'exercice suivant:

Je dois crée une comande ifdef qui lancé avec un arguments comme en desous:

$ ifdef arguments.h

Me crée un fichier arguments.h avec ceci à l'interieur:

#ifndef ARGUMENTS_H
#define ARGUMENTS_H

#endif /* ARGUMENTS_H */


Voila à quoi ressemble l'état actuel de mon code:

#!/bin/sh

echo "#ifndef $1_H" > $1
echo "#define $1_H" >> $1
echo "#endif$1_H" >> $1


Le problème est qu'ici l'arguments n'est pas forcément en majuscule, je n'arrive pas du tout à faire bon usage de la commande tr ...

Merci d'avance à tous ce qui voudrons bien me donner un coup de pouce !
A voir également:

3 réponses

gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
2 mai 2007 à 17:47
Salut,

Essaye avec :

`echo "$1" | tr "[:lower:]" "[:upper:]"`


Bon courage
2
Je te remercie, aprés test ca marche parfaitement, voila a quoi sa ressemble :

#!/bin/sh
echo "#ifndef $(echo $1|tr '[a-z]' '[A-Z]')_H" > $1
echo "#define $(echo $1|tr '[a-z]' '[A-Z]')_H" >> $1
echo "#endif /* $(echo $1|tr '[a-z]' '[A-Z]')_H */" >> $1
0
Dans cet exercice je dois agrémenter le code précédant de telle manière à:

1) affcher un message si aucun arguments n'a été donné dans la commande

2) ne pas modifier arguments.h si sa première ligne est:
#ifndef ARGUMENTS_H

3)creer 1e fichier normalement autrement



Voila l'état actuel de mon code, j'arrive à intégrer facilement les condition 1 et 3 mais c'est plus compliqué pour la deuxième ...

#!/bin/sh
if [ $# = 0 ]
then
echo "Il manque un argument aprés ifdef"
else
echo "#ifndef $(echo $1|tr '[a-z]' '[A-Z]')_H" > $1
echo "#define $(echo $1|tr '[a-z]' '[A-Z]')_H" >> $1
echo "#endif /* $(echo $1|tr '[a-z]' '[A-Z]')_H */" >> $1


Encore une fois, je remercie tous ceux qui m'aideront !
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
2 mai 2007 à 18:58
Salut,

Un truc dans le genre devrait pouvoir le faire :

#!/bin/sh 
if [ $# = 0 ] 
then 
echo "Il manque un argument aprés ifdef" 
else
 if [ `head -1 $1` != "" ]
 then
  echo "#ifndef $(echo $1|tr '[a-z]' '[A-Z]')_H" > $1 
  echo "#define $(echo $1|tr '[a-z]' '[A-Z]')_H" >> $1 
  echo "#endif /* $(echo $1|tr '[a-z]' '[A-Z]')_H */" >> $1 
 fi
fi



Mais tu dois pouvoir le faire plus "propre" car je ne connais pas tres bien la syntaxe du sh.

Bon courage
0
gorkimat Messages postés 70 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 1 mars 2012 9
2 mai 2007 à 21:15
Salut

Autant pour moi, j'ai zapper une info :

#!/bin/sh 
if [ $# = 0 ] 
then 
echo "Il manque un argument aprés ifdef" 
else
 if [ `head -1 $1` != "#ifndef ARGUMENTS_H" ]
 then
  echo "#ifndef $(echo $1|tr '[a-z]' '[A-Z]')_H" > $1 
  echo "#define $(echo $1|tr '[a-z]' '[A-Z]')_H" >> $1 
  echo "#endif /* $(echo $1|tr '[a-z]' '[A-Z]')_H */" >> $1 
 fi
fi
0
Bonjour,

je souhaiterais connaitre la commande shell pour afficher des pipe | sur une ligne pour avoir 10 pipe au total

exemple si j'ai 3 pipe sur une ligne ... je souiterais rajouter 7 pipe
et la ligne suivante si j'en ai 4 il me faut rajouter 6 pipe.

merci d'avance
0