Vous êtes sur la page 1sur 27

(C) Abderazak Chaouche

Formateur Linux systeme & administration


a.chaouche@laposte.net
Les variables utilisateurs

C'est toute variable définie par un


utilisateur pour ses propres besoins.

Pour le Shell le contenu d'une variable est


une chaîne de caractère
Declaration d'une variable

En général le nom d'une variable doit être


en minuscule et ne contient que des
lettres, des chiffres et le souligné (Le
nom ne doit pas commencer par un chiffre).
On peut déclarer une variable de 2
manières différentes:
affectation directe
par la commande declare
Affectation directe

(#ou$) nom=[valeur]
Ne pas laisser d'espace vide avant et
après le signe =
Si valeur omise, la variable contient une
chaîne vide.
Exemples
a=”Cours Linux”
b=
c=”Administration Systeme Linux”
La référence a une variable se fait en
précédent le caractère “$” avant le nom de
la variable.
echo $a
echo $b $c
Declaration avec declare

declare -i [nom=[valeur]]
Example: declare -i x=12
la variable x est traitée comme un entier.
L'évaluation arithmétique est effectuée
lorsque la variable reçoit une valeur.
déclare -i fige numériquement une variable.
Exemple:

#declare -i x=12
#echo $x
#x=24
#echo $x
#x=”Ali”
#echo $x
( le zéro est code )
declare

declare sans option affiche les variables


déclarées qu'elles soient directement
affectées ou avec declare -i
Elle affiche aussi une autre classe de
variables, se sont les variables
d'environnement.
#declare
arithmetique de variables

#declare -i v=12
#declare -i w=4
#declare -i m=$v*$w
#echo $m
Explique ce qui suit:
d=$a*$b -----> 12*4 : PK ?
Concatenation de variables

#var=”Début de cours ” : affectation de la


chaîne a la variable var
# echo $var ===> Début de cours
#var2=”$varlinux” : Affectation de la
variable varlinux a var2
#echo $var2 ===> une ligne vide ( La
variable varlinux n'existe pas.
Concatenation de variables.....

#var3=$var : affectation du contenu de var


vers var3
#echo $var3 ====> Début de cours

explique cette déclaration:


var4=”${var} Linux
echo $var4
Variables sous forme de tableau

nom=([0]=v1 [1]=v2 ........[n]=vn)


référence : ${nom[i]}
exemple:
liste=(0=ali 1=lila 2=omar 3=amine)
#echo ${liste[2]}
#echo ${liste}
#echo ${liste[3]}
Protection de variable

Il arrive qu'on veut protéger une variable


contre la modification.
#declare -r i=12
#echo $i
#i=23
?????
Protection de variable

#declare -r var4=”Mardi”
#echo $var4
#var4=”Mercredi”
?????
Afficher les variables protegees

#readonly
# declare -r
Retirer une variable

unset nom-variable
f=”zone”
echo $f
unset f
echo $f
Substitution de variables

#k=$(ls -l)
#l=$(cat /etc/passwd)
Quelle est la différence entre
echo $k et echo “$k”
Fait la même chose avec la varaible l
Deduct a ruler !
Lecture de variables
l'instruction read permet de lire l'entree standart et
l'affecter a une ou plusieurs variables
#read p
_ (saisie de la valeur de la variable + validation)
#echo $p
#read nom prenom profession
_ali omar Maitre de conference
#echo $nom
#echo $prenom
$echo $ profession
Rappel : declare te permet de les afficher toutes.
Quelques options

Les variables, notamment utilisateurs, sont surtout utiles


dans des scripts. Donc l'usage de certaines options est
nécessaire.
1) -n# (# représente la taille de la variable),
ex: #read -n8 a
2) -p “Chaine” (Affiche la chaîne entre guillemets)
ex: #read -p “Nom = “ nom
Suite..

3) -s (La valeur de la variable saisie ne sera pas


affichée)
ex: #read -s password
#declare ou #echo $password

4) - - stdin (Option indiquant que la commande doit le


lire le contenu de la variable depuis l'entrée standard, qui
peut être aussi un Pipe. (Les 2 tirets sont collés)
declaration ideale

#read -sn6 -p “Choisit un mot de passe: ” passe


(l'option s doit toujours précéder l'option p)
Integration de variables dans des scripts

Sous éditeur Vi, ouvre un nouveau fichier:


#vim script1
La 1ere ligne du script doit indiquer au système quel shell (bash, korn,)
utiliser pour interpréter les commandes
syntaxe: #!/bin/bash
Les lignes suivantes servent a déclarer tes variables, en verite tu peux
inclure n'importe quelle commande, fonction, procédure tout en usant de
structure de contrôle (if,...), de conditions, de boucles, etc..
A la fin, on sauvegarde puis on donne le droit exécution au script.
# chmod +x script1
puis on exécute:
# ./script1
Exercice

écris un script bash qui permet de lire 3


variables, puis les afficher.
Solution
#!/bin/bash
clear
echo " Je declare 3 variables"
echo " ----------------------"
echo
read -n15 -p " Donner votre nom: " nom
read -n15 -p " Donner votre prenom: " prenom
read -sn15 -p " Choisit un mot de passe: " passe
clear
echo " Votre nom est $nom, votre prenom est $prenom et vous avez
choisi \
comme mot de passe $passe Salam"
Pratique

Rappel: la commande chage permet de gérer


l'authentification d'un utilisateur système.
# chage -m 10 -M 30 -W 12 -I 7 -E 2012-12-31 linux1

On te demande d'écrire un petit script qui te permet de gérer


cette authentification.
#!/bin/bash
# script gestion des comptes
clear
echo "Gestion des users"
read -p "login = " login; echo
read -n2 -p "Nombre de jour minimal = " m; echo
read -n2 -p "Nombre de jour maximal = " M; echo
read -n2 -p " Warning =" W;echo
read -n2 -p " Delais de grace =" I;echo
echo " Le compte expire ";echo
read -n4 -p " Annee (aaaa): " a;echo
read -n2 -p " Mois (mm): " mm;echo
read -n2 -p " Jour (jj): " j;echo
chage -m $m -M $M -W $W -I $I -E $a-$mm-$j $login
clear
echo “ la nouvelle authentification est :”
cat /etc/shadow|grep “$login”
#fin script