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.