Shell script:Instructions conditionnelles et boucles
De WIKI.minetti.org
Sommaire
L'instruction conditionnelle IF
L'instruction conditionnelle IF a la forme suivante:
if [ test A ]; then ... Instruction ... elif [ test B ]; then ... Instruction ... else ... Instruction ... fi
Il faut faire attention de laisser des espaces entre les crochets encadrant l'expression conditionnelle.
Boucle pour lister le contenu d'un répertoire
Pour traiter le contenu d'un répertoire:
for FILE in "$PATH_TO_TREAT/*" ; do if [ "$FILE" != "$PATH_TO_TREAT/*" ]; then ... Instruction ... fi done
Pour la prise en compte des fichiers cachés:
for FILE in "$PATH_TO_TREAT/.*" ; do if [ "$FILE" != "$PATH_TO_TREAT/." ] && [ "$FILE" != "$PATH_TO_TREAT/.." ]; then ... Instruction ... fi done
Boucle pour parser un fichier
Tableau
Pour extraire les données d'un fichier sous forme de tableau:
while IFS=: read user pass uid gid full home shell; do echo -e "$full :\n\ Pseudo : $user\n\ UID :\t $uid\n\ GID :\t $gid\n\ Home :\t $home\n\ Shell :\t $shell\n\n" done < /etc/passwd
IFS indique le caractère de séparation. Par défaut c'est le caractère espace qui est pris.
Autre exemple avec un caractère tabulation comme séparateur:
TAB=$( printf "\t" ) while IFS=$TAB read user pass uid gid full home shell; do echo -e "$full :\n\ Pseudo : $user\n\ UID :\t $uid\n\ GID :\t $gid\n\ Home :\t $home\n\ Shell :\t $shell\n\n" done < /var/minetti/passwd
Liens externes
commentcamarche.net: Comment lire un fichier ligne par ligne