Programmation bash - corrigés - Bienvenue sur le site de Jean

Transcription

Programmation bash - corrigés - Bienvenue sur le site de Jean
Programmation bash - corrigés
Jean-Baptiste Vioix
([email protected])
1
1.1
Lecture de variable
Nom de l’utilisateur et de la machine
#!/bin/bash
echo $LOGNAME
echo $HOSTNAME
1.2
Nom de l’utilisateur et de la machine et date
#!/bin/bash
today=(‘date‘)
echo "Bonjour $LOGNAME , nous sommes le ${today[0]}
${today[2]} ${today[1]} ${today[5]}"
2
2.1
Calcul de la factorielle
Avec for
#!/bin/bash
facto=1
for i in 1 2 3 4 5 6 7 8 9 10
do
facto=‘expr $facto \* $i‘
done
echo "La factorielle de 10 est $facto"
2.2
Avec while
#!/bin/bash
facto=1
index=1
while [ $index -le 10 ]
do
facto=‘expr $facto \* $index‘
1
index=‘expr $index + 1‘
done
echo "La factorielle de 10 est $facto"
2.3
Avec until
#!/bin/bash
facto=1
index=1
until [ $index -gt 10 ]
do
facto=‘expr $facto \* $index‘
index=‘expr $index + 1‘
done
echo "La factorielle de 10 est $facto"
3
Calcul de la factorielle avec un paramètre
#!/bin/bash
facto=1
index=1
while [ $index -le $1 ]
do
facto=‘expr $facto \* $index‘
index=‘expr $index + 1‘
done
echo "La factorielle de $1 est $facto"
4
Calcul de la factorielle avec un paramètre et vérification de validité
#!/bin/bash
clear
err=1
# Tests de validité
if [ $# -eq 1 ]; then
valeur=$1
expr $valeur + 1 1>/dev/null 2>/dev/null
if [ $? -eq 0 -a $valeur -le 20 ]; then
err=0
fi
fi
2
while [ $err -ne 0 ]
do
echo "Entrez un chiffre inférieur à 20"
read valeur
expr $valeur + 1 1>/dev/null 2>/dev/null
if [ $? -eq 0 -a $valeur -le 20 ]; then
err=0
fi
done
# Calcul de la factorielle
./factorielle $valeur
5
Création de répertoires
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Ce script attend deux paramètres"
exit 1
fi
index=0
while [ $index -ne $2 ]
do
mkdir $1_$index
index=$((index+1))
done
6
Listage récursif des répertoires
Ce script est sauvegardé sous le nom /home/jb/cours/sysexp/lsrep.
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Répertoire d’appel : " ‘pwd‘
/home/jb/cours/sysexp/lsrep ‘pwd‘;
else
if [ -d "$1" ]; then
cd "$1";
echo ‘pwd‘;
for i in *;do
if [ -d "$i" ]; then
/home/jb/cours/sysexp/lsrep "$i";
fi
3
done
fi
fi
4