ENSI-II2
Environnement Unix
Correction du TP 2
Exercice 1
if [ $# -eq 1 ]
then
for i in users
do
if [ $i = $1 ]
then
echo "Utilisateur $1 connecté"
exit
fi
done
echo "Utilisateur $1 non connecté"
else
echo "nombre de paramètres incorrect."
fi
Exercice 3
if [ $# -eq 2 ] then
x=1
while [ $x -le $2 ]
do
nom="$1$x"
echo "Voulez vous créer le fichier $nom :"
read reponse
echo 'saisir o/n'
read reponse
if [ $reponse = o –o $reponse = O ]
then
touch $nom
fi
x=expr $x + 1
done
else echo "nombre de paramètres incorrect."
fi
Exercice 4
if [ $# -gt 0 ] then
echo "Trop de parametres."
else
echo "Le nombre d'utilisateurs connectés est :
"
users | sort u | wc -l
echo "Les utilisateurs connectés sont : "
users | sort -u
fi
Exercice 5
if [ $# -eq 1 ]
then
expr $1 + 1 > result 2> /dev/null
if [ -s result ]
then
echo "pas numérique"
else
echo "numérique"
fi
else
echo "nombres de paramètres incorrect"
fi
Publicité
Exercice 6
if [ $# -lt 1 ] then
echo " La liste des sous-répertoires du
répertoire courant est :"
for i in ls
do
if test -d $i then
echo "- $i \n"
fi
done
elif [ $# -eq 1 ] then
if test -d $1 then
echo " La liste des sous-répertoires du
répertoire $1 est :"
for i in ls $1
do
if test -d $i then
echo "- $i \n"
fi
done
else
echo "$1 n'est pas un répertoire."
fi
else
echo "nombre d'arguments > 1"
fi
Exercice 7
if [ $# -eq 1 ]
then
#Appel reccursif
./$0 $1 pwd
elif [ $# -eq 2 ]
then
if test -d $2
then
for i in ls $2
do
H. IDOUDI
1
ENSI-II2
Environnement Unix
if test $1 = $i
then
echo " $i est dans le repertoire $2"
fi
done
for i in ls $2
do
if test -d $i
then
./$0 $1 $i xx
fi
done
if [ $# -eq 2 ]
then
echo « élément non trouvé »
fi
else
echo "argument 2 doit être un répertoire."
Publicité
fi
else
echo " nombre d'arguments incorrect"
fi
Exercice 8
if [ $# -lt 1 ]
then
x=ls | wc –l
echo "Le nombre d'éléments du répertoire
courant est : $x"
else
for i in $@
do
if test -d $i
then
x=ls $i | wc –l
echo "Le nombre d'éléments de $i est : $x"
else
echo "$i n'est pas un répertoire"
fi
done
fi
Exercice 9
if [ $# -eq 2 ]
then
if test ! -f $1
then
echo " Le fichier est introuvable ."; exit
fi
if test ! -r $1 then echo " Vous n'avez pas le
droit de lecture sur le fichier $1."; exit
fi
if test -d $2
then
if test -w $2
then
cat $1 > "$2/$1"
else
echo " Vous n'avez le droit de lecture sur le
répertoire $2."; exit
fi
elif test -f $2
then
if test -w $2
then
echo " Le fichier existe déjà; voulez vous
l'ecraser (o-n) ?"
read reponse
until [ $reponse = o -o $reponse = n -o
$reponse = O -o $reponse = N ]
do
echo 'saisir o/n'
read reponse
done
case $reponse in
o) cat $1 > $2;exit;;
O) cat $1 > $2;exit;;
n) cat $1 >> $2;exit;;
N) cat $1 >> $2;exit;;
Publicité
esac
else
echo " Vous n'avez le droit de lecture sur le
fichier $2."; exit
fi
fi
else echo "nombre de paramètres incorrect."
fi
Exercice 10
x=0
mot=””
if [ $# -eq 1 ]
then
for i in cat $1
do
lg=echo $i | wc –c
if [ $lg -gt $x ] then
x=$lg
mot=$i
fi
done
echo "Le mot le plus long est : $mot "
else
echo " nombre de paramètres incorrect."
fi
H. IDOUDI
2
ENSI-II2
Environnement Unix
Exercice 11
if [ $# -eq 0 ]
then
echo -n "chaine 1 : "
read ch1;
echo -n "chaine 2 : "
read ch2
echo -n "chaine 3 : "
read ch3
elif [ $# -eq 3 ]
then
ch1=$1; ch2=$2; ch3=$3
else
echo "nombre de paramètres incorrect"
exit
fi
if ( test $ch1 = $ch2 -a $ch2 = $ch3 )
then
echo "les trois chaines sont egales."
elif ( test $ch1 = $ch2 )
then
echo "chaine 1 et chaine 2 sont égales."
elif ( test $ch1 = $ch3 )
then
echo "chaine 1 et chaine 3 sont égales."
elif ( test $ch2 = $ch3 )
then
echo "chaine 2 et chaine 3 sont égales."
else
echo "toutes les chaines sont différentes."
Publicité
fi
Exercice 12
if [ $# -eq 3 ] then
a=$3
m=$2
j=$1
Traiter les mois de longueur 31 jours
if [ $2 -eq 1 -o $2 -eq 3 -o $2 -eq 5 -o $2 -eq 7
-o $2 -eq 8 -o $2 -eq 10 ] then
if [ $1 -eq 31 ] then
j=1
m=expr $m + 1
else
j=expr $j + 1
fi
Traiter les mois de longueur 30 jours
elif [ $2 -eq 4 -o $2 -eq 6 -o $2 -eq 9 ]
then
if [ $1 -eq 30 ] then
j=1
m=expr $m + 1
else
j=expr $j + 1
fi
Traiter cas particulier du mois de décembre
elif [ $2 -eq 12 ] then
if [ $1 -eq 31 ] then
j=1
m=1
a=expr $a+ 1
else
j=expr $j + 1
fi
Traiter cas particulier du mois de février
elif [ $2 -eq 2 ] then
if [ $1 -eq 28 ] then
k=expr $3 % 4
if [ test $k -eq 0 ] then
j=expr $j + 1
else
j=1
m=expr $m + 1
fi
elif [ $1 -eq 29 ] then
j=1
m=expr $m + 1
else
j=expr $j + 1
fi
fi
#Affiche la date du lendemain avec le même
#format d’entrée
echo "La date du lendemain est : $j $m $a"
else
echo " le nombre de paramètres est incorrect."
fi
H. IDOUDI
3