Vous êtes sur la page 1sur 3

Exercices corrigés

1- Ecrire un script qui permet d’afficher le contenu d’un fichier f en utilisant la boucle while (sans
utiliser la commande cat).
while read line
do
echo $line
done < f

2- Ecrire un script qui permet d’ajouter, comme l’indique l’exemple ci-dessous, un & entre les noms
des couples passés en paramètre :
./ex2q2 'Ahmed Noura' 'Amine Ines' 'Alaa Imen'
Ahmed & Noura
Amine & Ines
Alaa & Imen
for i in "$@"
do
set $i
var=$1\ \&\ $2
echo $var
done
$@ doit être entre les guillemets sinon elle donne le même résultat que $* (tous les arguments dans la
même chaîne et non pas des chaînes séparées par des espaces suivant IFS)

3- Ecrire un script qui calcule et affiche le nombre de fichiers standards, de sous-répertoires, et


d'exécutables d'un répertoire passé en paramètre ou saisi en cas d'absence du paramètre. Exemple de
message affiché par le script : Il y a 5 répertoires, 7 fichiers et 9 exécutables dans /tmp.
j=0
k=0
l=0
if [ "$#" -eq 0 ]; then
echo "Saisir le répertoire"
read -r rep
else
rep=$1
fi
cd $rep
for i in *; do
if [ -d "$i" ]; then
echo "$i"
let j=$j+1
fi
if [ -f "$i" ]; then
echo $i
let k=$k+1
fi
if [ -x "$i" ]; then
echo $i
let l=$l+1
fi
done
echo "Il y a $j répertoires, $k fichiers et $l exécutables dans $rep"

4- Que fait le script suivant ?


#!/bin/bash
((test $1 -lt $2) && (echo ‘$1 < $2’)) || (echo ‘$2 < $1’)
Affiche $1 < $2 si $1 est inférieur à $2 et $2 < $1 si $2 est inférieur à $1.
Utiliser une autre méthode pour récrire ce script.
if test $1 -lt $2; then echo ’$1 < $2’; else echo ’$2 < $1’; fi

5- Qu’affiche la ligne de commande echo $VAR_C sachant que :


VAR_A="bon"
VAR_B="jour"
VAR_C=$VAR_A$VAR_B
bonjour

6- Ecrire un script qui affiche les valeurs successives de la suite définie par :
un+1 = un/2 si un est pair,
= 3*un + 1 si un est impair.
La valeur de u0 est donnée en argument. Le programme s'arrête lorsque la valeur à afficher vaut 1.
v=$1
echo $v
while(($v !=1))
do
if((v%2==0))
((v=v/2))
elif
((v=3*v+1))
fi
echo $v
done

7- Écrire un script affichant les nombres de 1 jusqu’à la valeur passée en paramètre du script à l’aide
d’une boucle while.
#!/bin/bash
i=1
while test $i -le $1; do echo $i; let i=$i+1; done

8- Modifier le script précédent pour utiliser la structure until do done.


#!/bin/bash
i=1
until test $i -gt $1;
do
echo $i;
let i=$i+1;
done

9- Modifier le script précédent pour calculer la moyenne de ces nombres.

2
#!/bin/bash
i=1;
s=0;
while test $i -le $1;
do
let i=$i+1;
let s=$s+$i;
done
let m=$s/$1
echo Moyenne: $m