Retourner au contenu. Retourner à la navigation

 

Chapitre 06 - Scripting Bash

by civ @ 04/04/2008

6.7 Select

Exemple 1 :

#!/bin/bash
echo "Faites un choix"
select rep in "rep1" "rep2" "rep3" "rep4";
do
if [ -z "$rep" ];
then
echo "Erreur, veuillez saisir une autre valeur"
else
echo $rep
break
fi
done

6.9.2 Paramètres

Exemple 1 :

#! /bin/sh
#
# params
#
# Script shell de mise en application des paramètres d'un script.
# Affiche l'ensemble des paramètres passés au script.
echo "Vous avez lancé le script shell $0"
echo "Vous lui avez fourni $# paramètres qui sont : $*"
echo ""
echo "Liste des paramètres :"
echo "----------------------"
numParam=1
for parametre in "$@"; do
echo "Paramètre $numParam = $parametre"
let $[numParam += 1]
done
echo ""
echo -n "Après la commande 'shift $#', "
shift $#
echo "il reste $# paramètres"

6.12.2 Structure While

Exemple 1 :

#! /bin/sh
#
# factorielle
#
# Script shell de mise en application de
# Affiche la factorielle du nombre donné
if [ $# -ne 1 ] || [ $1 -lt 0 ]; then
echo "Usage : factorielle
else
resultat=1
n=$1
while [ $n -gt 1 ]; do
let $[ resultat *=
let $[ n -= 1]
done
echo "$resultat"
fi

Exemple avec until :

#! /bin/sh
#
# testfact
#
# Script shell de mise en application de l'instruction until.
# Teste le Script shell de calcul de factorielles.
n=0
until [ $n -eq 14 ]; do
resultat=$(factorielle $n)
echo "$n! = $resultat"
let $[ n += 1 ]
done

6.12.13 Structure For

Exemple 1 :

#! /bin/sh
#
# fichier_ou_repertoire
#
# Script shell de mise en application de l'instruction for.
# Affiche le type (fichier ou répertoire) de chaque paramètre.
for param in "$@"; do # Pour chaque paramètre...
if [ -f "$param" ]; then # C'est un fichier?
echo "$param est un fichier."
elif [ -d "$param" ]; then # C'est un répertoire?
echo "$param est un répertoire."
elif ! [ -e "$param" ]; then # N'existe pas
echo "$param n'existe pas."
else # C'est autre chose?
echo "$param n'est ni un fichier, ni un répertoire."
fi
done

6.12.4 Structure case

#! /bin/sh
#
# question
#
# Script shell de mise en application de l'instruction case.
# Pose une question et attend une réponse par oui ou non.
# La valeur retournée est 0 pour oui et 1 pour non.
retour=X
while [ "$retour" = "X" ]; do
echo -n "On continue (O/N) ? "
read reponse
case "$reponse" in
o* | O* )
retour=0
;;
[nN]* )
retour=1
;;
"?"* )
echo "Il n'y a pas d'aide disponible"
;;
*)
echo "Erreur : entrez [O]ui ou [N]on."
;;
esac
echo ""
done
exit $retour

6.12.5 Structure Trap

Exemple 1 :

#! /bin/sh
# exTrap
# Script shell de mise en application de l'instruction case.
trap "echo Le script s\'est terminé" EXIT
trap "echo Vous avez appuyé sur Ctrl-C" SIGINT
trap "echo Vous avez fait : kill $$" SIGTERM
trap "echo J\'ai été stoppé et je continue" SIGCONT
trap "echo J\'ai reçu SIGUSR1 ou SIGUSR2" SIGUSR1 SIGUSR2
echo "Processus $$ : J'attends un signal..."
#
# Compte à rebours
#
i=10
while [ $i -gt 0 ]; do
echo -n "$i "
sleep 1
let $[ i -= 1 ]
done
echo "0"

6.13 Fonctions

Exemple 1 :

#! /bin/sh
# signe2
# Script shell de mise en application des fonctions.
# Affiche le signe d'un nombre et de son carré.
# carré(nombre)
# Retourne le carré du nombre donné en paramètre.
#
# Paramètres : $1 -> Le nombre dont on veut le carré
#
function carré()
{
return $[ $1 * $1 ]
}
# affSigne(nombre)
#
# Affiche le signe du nombre donné
# en paramètre.
# Paramètres : $1 -> Le nombre dont on teste le signe.
#
function affSigne()
{
local signe
if [ $n -lt 0 ]; then # n < 0 ?
signe=négatif
elif [ $n -gt 0 ]; then # n > 0 ?
signe=positif
else # n = 0
signe=nul
fi
echo "Le nombre $1 est $signe"
}
#
# Programme principal
#
echo -n "Entrez un nombre : "
read n # Saisie de n
affSigne $n # Affichage du signe de n carré
$n # Calcul du carré de n
n=$? # Récupération du résultat
echo "Le carré du nombre choisi est $n"
affSigne $n # Affichage du signe de n

 

Par civ Dernière modification 04/04/2008 21:35
Navigation
Actualités
03/12/2008 Songbird 1.0
20/10/2008 Société Générale se met au vert
15/09/2008 Sortie de la version VLC 0.9.2
23/06/2008 Opération du libre à Nantes !
23/06/2008 OpenSuse 11
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
22/04/2008 Sed : Rechercher du texte entre deux chaines de caractères
04/04/2008 Gérer son(ses) écran(s) avec xrandr
26/03/2008 Tips sur l'historique de vos commandes
13/02/2008 Linux-Unix Cheat Sheets
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
dunod-codes Chapitre 06 - Scripting Bash