Boucle for
>>> Code BASH
Version PDF

Dans cette astuce, nous apprendrons à utiliser la boucle "for".


Sommaire :

I) Explications
II) Exemples
1) Exemple 1
2) Exemple 2
3) Exemple 3


I) Explications

Haut de page

Pour définir une variable, suivez les instructions suivantes :

 Créez un nouveau script en tapant la commande :

vim script-6.sh

 Commencez le script par écrire le type de code utilisé :

#!/bin/bash

Le début de la boucle commence par "for" et se termine par "done". Voici l’architecture de la boucle :

for variable in 'valeur'
do
	Commandes exécutées
done

II) Exemples

Haut de page

1) Exemple 1

 Premier exemple de script :

  • Nous allons lister le contenu du répertoire "/etc"
    • Pour chaque fichier ou dossier affiché, nous allons ajouter la phrase "est dans le répertoire /etc".

 Voici le script :

for i in <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bHMgL2V0YzwvY29kZT4="></span>
        do
        echo "$i est dans le repertoire /etc"
done

 Exécutez le script avec la commande "bash script-6.sh". Vous devez obtenir ceci :

root@debian:~# bash script-6.sh
acpi est dans le repertoire /etc
adduser.conf est dans le repertoire /etc
adjtime est dans le repertoire /etc
aliases est dans le repertoire /etc
alternatives est dans le repertoire /etc
apt est dans le repertoire /etc
at.deny est dans le repertoire /etc
bash.bashrc est dans le repertoire /etc
bash.bashrc.old1 est dans le repertoire /etc
bash.bashrc.old2 est dans le repertoire /etc
bash.bashrc.old3 est dans le repertoire /etc
bash_completion est dans le repertoire /etc
bash_completion.d est dans le repertoire /etc
bindresvport.blacklist est dans le repertoire /etc
blkid.tab est dans le repertoire /etc
blkid.tab.old est dans le repertoire /etc
ca-certificates est dans le repertoire /etc
ca-certificates.conf est dans le repertoire /etc
calendar est dans le repertoire /etc
console-setup est dans le repertoire /etc

2) Exemple 2

 Autre exemple de script possible avec la boucle for :

  • Nous commençons par créer un dossier backup
  • Puis on liste les fichiers contenus dans répertoire "/etc/init.d"
    • Puis nous ferons une copie dans le répertoire "/etc/init.d/backup" en ajoutant l’extension ".bck" pour chaque fichier.
    • On affiche le nom du fichier "copié dans le répertoire backup".

 Voici le script :

mkdir /etc/init.d/backup
cd /etc/init.d
for i in <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bHMgL2V0Yy9pbml0LmQ8L2NvZGU+"></span>
        do
        cp $i /etc/init.d/backup/$i.bck
        echo "$i copié dans le répertoire backup"
done

 Exécutez le script, vous devez obtenir ceci :

root@debian:~# bash script-7.sh
mkdir: impossible de créer le répertoire « /etc/init.d/backup »: Le fichier existe
acpid copié dans le répertoire backup
atd copié dans le répertoire backup
cp: omission du répertoire « backup »
backup copié dans le répertoire backup
bootlogs copié dans le répertoire backup
bootmisc.sh copié dans le répertoire backup
bootmisc.sh.old copié dans le répertoire backup

3) Exemple 3

 Dernier exemple de script possible avec la boucle for et avec la condition IF :

  • Nous commençons par listée le contenu du répertoire "/etc"
    • Pour chaque ligne listée on affiche si c’est un répertoire, un fichier ou un lien
       Tapez les lignes suivantes :
cd /etc
for i in <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bHMgL2V0YzwvY29kZT4="></span>
        do
        if [ -d "$i" ]
        then
        echo "$i c'est un repertoire "
        elif [ -f "$i" ]
        then
        echo "$i  c'est un fichier "
        elif [ -h "$i" ]
        then
        echo "$i  c'est un lien "
        else
        echo "$i  autre type"
        fi
done

 Exécutez le script, vous devez obtenir ceci :

root@debian:~# bash script-8.sh
acpi c'est un repertoire
adduser.conf  c'est un fichier
adjtime  c'est un fichier
aliases  c'est un fichier
alternatives c'est un repertoire
apt c'est un repertoire
at.deny  c'est un fichier
bash.bashrc  c'est un fichier
bash.bashrc.old1  c'est un fichier
bash.bashrc.old2  c'est un fichier
bash.bashrc.old3  c'est un fichier
bash_completion  c'est un fichier
 
 
 
 
 
Commentaires :