Shell script : besoin d'aide !

Résolu
momsse -  
 ayman -
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 !
Configuration: Mac PowerPC
Firefox 2.0.0.1

3 réponses

  1. gorkimat Messages postés 71 Statut Membre 9
     
    Salut,

    Essaye avec :

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


    Bon courage
    2
    1. momsse
       
      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
  2. momsse
     
    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
    1. gorkimat Messages postés 71 Statut Membre 9
       
      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
    2. gorkimat Messages postés 71 Statut Membre 9
       
      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
  3. ayman
     
    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