next up previous contents index
Next: Utilisation de test Up: Passons aux choses sérieuses Previous: Utilisation de while

       
Utilisation de variables

Une variable peut être supprimée par la commande unset, et peut être verouillée par la commande readonly :

moi=mathieu
echo $moi

Le résultat s'affiche :

mathieu

Maintenant, si on vérrouille la variable moi, et qu'on essait de la supprimer :

readonly moi
unset moi

on obtient un message d'erreur :

bash: unset: moi: cannot unset: readonly variable

  Pour qu'un script shell puisse utiliser une variable définie dans le shell par l'utilisateur (dans une fenêtre xterm, par exemple), il faut l'exporter avec la commande export :

export moi

On peut rechercher une chaîne de caractères dans le contenu d'une variable, en fournissant un critère de recherche. Par exemple, pour rechercher la plus petite occurrence du critère de recherche en début de texte de la variable ``t'' définie par :

t="Tentation donnant satisfaction"

on utilisera le signe ``#'' et on entrera la commande :

echo ${t#T*i}

ou ``t'' désigne la variable, et ``T*i'' le critère de recherche. Le résultat est :

on donnant satisfaction

De même, pour rechercher la plus grande occurrence du critère de recherche en début de texte de la variable ``t'', on utilisera le signe ``##'' et on entrera la commande :

echo ${t##T*i}

Le résultat est on. Pour rechercher en fin de texte, on utilisera respectivement ``%'' et ``%%''.

# Fichier varia.sh.
# Exemple d'utilisation de variables.


# Affectation, calculs...


variable1=5
echo variable1 $variable1

echo -n "variable2 ? "
read variable2
echo variable2 $variable2

variable3=$[variable1+variable2]

# equivalent a la ligne :
#       variable3=$((variable1+variable2))

echo variable3 $variable3


# "declare -i" permet de rendre les calculs plus rapides...

declare -i nombre
nombre=3*9
echo 3*9=$nombre
let entiere=nombre/5
echo partie entiere de $nombre/5 : $entiere

echo "fichier vide (2e argument, vide.txt par defaut) : ${2:-vide.txt}"

nom="mathieu"

if who | grep "^$nom" > /dev/null 2>&1
then
    echo "L'utilisateur \"$nom\" est connecte"
else
    echo "L'utilisateur \"$nom\" n'est pas connecte"
fi

somme=10
i=3

somme=`expr $somme + $i`

echo somme = $somme

espace=$(du -s)
echo $espace


#------#
# eval #
#------#


# eval sert a evaluer une expression. Ainsi, si :
#       $b contient a
# alors :
#       \$$b contient $a
# et
#       eval echo \$$b
# contient le contenu de la variable a. En fait, eval permet d'outre
# passer les signes "$".

a=Mathieu
echo "a=Mathieu"

b=a
echo "b=a"
echo "\$b contient $b"
echo "\\\$\$b contient \$$b"

echo "Maintenant avec 'eval' : "
echo -n "eval echo \\\$\$b = "
eval echo \$$b

echo "Parfois il faut combiner plusieurs 'eval' :"

a='$b'
b='$c'
c=fin

echo "a='\$b'"
echo "b='\$c'"
echo "c=fin"

echo "eval echo \$a"
eval echo $a
echo "eval eval echo \$a"
eval eval echo $a

Les autres commandes souvent utilisées par les scripts shells sont détaillées dans les sections qui suivent. Chacune d'elles traite d'une instruction particulière.


next up previous contents index
Next: Utilisation de test Up: Passons aux choses sérieuses Previous: Utilisation de while
MATHIEU DECORE
1999-11-03
Merci de me dire ce que pensez de ce document.