Ecrire un Programme en Bourne Shell

matie7 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

5 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,
Pour commancer
http://www.trustonme.net/categorie.php?id=69
http://www.google.fr/search?client=firefox-a&rls=org.mozilla%3Afr%3Aofficial_s&hl=fr&q=scripts+shell&meta=&btnG=Recherche+Google
Programme 1
un exemple qui peut t'aider
#! /bin/sh

if [ $# -ne 0 ];then
  echo $1
  echo $2
else
  echo "pas d'arguments"
fi
0
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
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
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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