Ecrire un Programme en Bourne Shell

matie7 Messages postés 3 Date d'inscription   Statut Membre -  
 chaibi -
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. jisisv Messages postés 3678 Statut Modérateur 936
     
    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
    0
  2. jisisv Messages postés 3678 Statut Modérateur 936
     
    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" ;)

    0
  3. Nicaise
     
    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
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. chaibi
     
    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
    0