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