Les boucles dans un script shell
Objectif:
- Utiliser des instructions itératives dans un script.
Énoncé:
-
écrire un script permettant de calculer la somme des entiers paires compris entre 0 et 100
-
Écrire un script qui compte le nombre de fichiers et de répertoires dans le répertoire courant et affiche le résultat sous forme :
-
Fichiers : 12
-
Répertoires : 9
-
Créez un script qui boucle en demandant une chaîne de caractères, insère cette chaîne de caractères dans un fichier donné en premier paramètre jusqu'à ce que la taille du fichier dépasse 50 octets.
-
Écrire un script Shell qui donne pour un répertoire donné en argument le nombre de chacun des types des fichiers suivant :Fichiers exécutables, fichiers accessible en lecture et fichiers accessible en écriture.
Exemple d’exécution :exelib@localhost:~$ bash script3.4.sh /etc
fichiers exécutables:4
fichiers accessibles en lecture:94
fichiers accessibles en écriture:0 -
écrire un script qui lit un ensembles de fichier comme paramètres puis les compresse en utilisant gzip,bzip2 ou zip selon le choix de l'utilisateur.
Exemple d’exécution :exelib@localhost:~$ ./compresser recycle puissance somme_10
1-compresser les fichiers avec gzip
2-compresser les fichiers avec bzip2
3-compresser les fichiers avec zip
votre choix?2
compression avec bzip2
exelib@localhost:~$ ls -l *.bz2
-rwxrwxr-x 1 exelib exelib 164 mars 23 10:47 puissance.bz2
-rwxrwxr-x 1 exelib exelib 226 avril 2 15:37 recycle.bz2
-rwxrwxr-x 1 exelib exelib 119 mars 23 07:08 somme_10.bz2
Script 1:
#!/bin/bash echo "calcul de la somme des entiers paires compris entre 0 et 100..." s=0 for ((i=0;i<=100;i++));do let "test=i%2" if [ $test -eq 0 ];then let s=s+i fi done echo "la somme est $s"
Script 2:
#!/bin/bash nbr_f=0 nbr_r=0 for i in *;do if [ -f "$i" ];then let nbr_f++ elif [ -d "$i" ];then let nbr_r++ fi done echo "Fichiers:$nbr_f" echo "Répertoires:$nbr_r"
Script 3:
#!/bin/bash if [ -z $1 ];then echo "il faut donner un fichier en paramètre" else taille=0 while [ $taille -lt 50 ];do echo "saisir une chaîne de caractères" read ch echo "ch" >>$1 taille=$(cat "$1" | wc -c) done echo "le fichier a dépassé la taille autorisée" wc -c $1 fi
Script 4:
#!/bin/bash if [ -z $1 ];then echo "usage:script3.4.sh nom_repertoire..." else cd $1 nbx=0 nbr=0 nbw=0 for i in *;do if [ -x "$i" -a -f "$i" ];then let nbx++ elif [ -r "$i" -a -f "$i" ];then let nbr++ elif [ -w "$i" -a -f "$i" ];then let nbw++ fi done fi echo "fichiers exécutables:$nbx" echo "fichiers accessibles en lecture:$nbr" echo "fichiers accessibles en écriture:$nbw"
Script 5:
#!/bin/bash if [ $# -eq 0 ];then echo "usage:compresser file1 file2..." else echo "1-compresser les fichiers avec gzip" echo "2-compresser les fichiers avec bzip2" echo "3-compresser les fichiers avec zip" read -p "votre choix?" c case $c in 1)echo "compression avec gzip" for i in $*;do gzip $i done;; 2)echo "compression avec bzip2" for i in $*;do bzip2 $i done;; 3)echo "compression avec zip" for i in $*;do zip $i done;; *)echo "choix invalid";; esac fi