Sommaire :
I) Explications
II) Exemples
1) Exemple 1
2) Exemple 2
3) Exemple 3
I) Explications
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
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 :
- Pour chaque ligne listée on affiche si c’est un répertoire, un fichier ou un lien
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