Ecrire un Programme en Bourne Shell

Bonjour,

Je suis étudiant en BTS IG et j'ai plsuiers programmes à écrire en Bourne Shell.

Programme n°1 :
Ecrire un programme en Bourne Shell qui accepte indifféremment 0,1 ou 2 arguments numériques et les classer en ordre croissant, comme dans l'exemple suivant :
$ classe 26 13
13 est inférieur a 26
$ classe 11
Il manque un argument, entrer votre nombre : 89 (89 entré par l'utilisateur)
11 est inferieur a 89
$ classe
Il manque deux arguments.
Entrer le premier argument : 987 (987 entré par l'utilisateur)
Entrer le second argument : 23 (23 entré par l'utilisateur)
23 est inférieur a 987

Programme n°2
Ecrire un programme en Bourne Shell qui sélectionne dans le répertoire courant les fichiers possèdant une extension (essai.c, truc.f, toto.pas mais pas les fichiers commencant par un .) et qui les range dans le répertoire dont le nom est l'extension (crée automatiquement s'il existe pas). Par exemple :
$ ls -C
essai.c essaibis.c graphic.pas 1 machin.1
pas toto.pas truc1 truc2 truc3
$ range
le répertoire c a ete cree.
le fichier essai.c a ete deplace dans c.
le fichier essaibis.c a ete deplace dans c.
le fichier graphic.pas a ete deplace dans pas.
le fichier machin.1 a ete deplace dans 1.
le fichier toto.pas a ete deplace dans pas.
$ls -C
c 1 pas truc1 truc2 truc3
$

Merci beaucoup d'avance pour votre aide.

5 réponses

  1. if test #$ -eq 0
    then
    echo " pas d argument"
    else
    grep $1 /etc/passwd|wc -l >c
    if `cat c|wc -l` -eq 0
    then
    echo "$1 non connecté"
    else
    echo "$1 est connecté"
    fi
    fi
    1. Bonjour,

      je m'appelle Louagnaba Douzoumka,etudiant en troisieme année de filière informatique appliquée à l'université de N'djamena.
      je voudrai que vous m'envoyez des exercices corrigés du simple au plus compliqué en programmation Unix(Bourne shel) pour avoir de bonnes bases et de competences suffisantes en Programmation Unix.

      Email: douzoumka@yahoo.frl
      1. Modérateur
        Ah oui, j'utilise quelques particularités de BASH
        par exzmple $(xommande) qui est l'équivalent de l'illisible et infâme construction
        `commande`
        Enfin, je crois avoir affiché les bons "backetiques" ;)

        1. Modérateur
          Puur le 2
          Ceci peut te fournir un embryon de solution, à toi à améliorer et vérifier....
          johand@horus:~/tmp/essai$ touch .hidden1 .hidden2 source.c source.S archive.tar.gz
          johand@horus:~/tmp/essai$ cp ../range.sh .
          johand@horus:~/tmp/essai$ ls -Al
          total 4
          -rw-r--r--  1 johand johand   0 2006-03-01 21:29 archive.tar.gz
          -rw-r--r--  1 johand johand   0 2006-03-01 21:29 .hidden1
          -rw-r--r--  1 johand johand   0 2006-03-01 21:29 .hidden2
          -rwxr-xr-x  1 johand johand 185 2006-03-01 21:29 range.sh
          -rw-r--r--  1 johand johand   0 2006-03-01 21:29 source.c
          -rw-r--r--  1 johand johand   0 2006-03-01 21:29 source.S
          johand@horus:~/tmp/essai$ ./range.sh
          find: AVERTISSEMENT: vous avez spécifié l'option -maxdepth après un argument qui n'est pas une option -type mais les options sont positionnelles (-maxdepth affecte les tests spécifiés avant aussi bien qu'après)
          
          johand@horus:~/tmp/essai$ ls -Al
          total 16
          drwxr-xr-x  2 johand johand 4096 2006-03-01 21:29 c
          drwxr-xr-x  2 johand johand 4096 2006-03-01 21:29 gz
          -rw-r--r--  1 johand johand    0 2006-03-01 21:29 .hidden1
          -rw-r--r--  1 johand johand    0 2006-03-01 21:29 .hidden2
          drwxr-xr-x  2 johand johand 4096 2006-03-01 21:29 S
          drwxr-xr-x  2 johand johand 4096 2006-03-01 21:29 sh
          johand@horus:~/tmp/essai$ cat sh/range.sh
          #!/bin/sh
          thefiles=$(find . -type f -maxdepth 1 -not -name '.*')
          for file in $thefiles; do
                  ext=${file##*.}
                  [ -d $ext ] || mkdir $ext || echo "Cannot create $ext"
                  mv $file $ext
          done
          
          

          Johan