next up previous contents Next: Flux et sed comme Up: Les scripts du shell. Previous: Notation avec guillements "doubles".   Table des matières  


8.12 Substitution avec guillemets `inversés `.

Les guillemets simples mais inversés ` ` ont une signification particulière pour le shell. Quand une commande est à l'intérieur des guillements inversés, cela signifie qu'elle sera exécutée et son résultat substitué par ce que les guillemets inversés contiennent. Considérez la commande cat. En premier lieu, créez un petit fichier intitulé to_be_catted contenant le seul mot daisy. Ensuite, créez le script suivant:

X=`cat to_be_catted`

echo $X 



L'action de cat sur le fichier to_be_catted retourne daisy dans les guillemets de sorte qu'X contient ce mot. C'est un outil puissant. Considerez la commande expr:

X=`expr 100 + 50 '*' 3`

echo $X 



Donc, nous pouvons utiliser expr et les guillemets inversés pour exécuter des opérations mathématiques sur des entiers dans les scripts de shell. [NdT: pour les calculs impliquant des nombres décimaux, il convient d'utiliser bc.] Ci-dessous se trouve une fonction permettant de réaliser le factoriel d'un nombre. Notez la manière dont le signe * est inséré dans les guillemets simples. Ceux-ci empêchent le shell de considérer ce signe comme un motif de remplacement (comme cela est utilisé dans la recherche de fichiers):

function factorial ()

{

   N=$1

   A=1

   while test $N -gt 0; do

      A=`expr $A '*' $N`

      N=`expr $N -1`

   done

   echo $A

} 



Vous observerez que les crochets utilisés précédemment peuvent être employés presque tout le temps avec expr. (Cependant, la notation $[ ] est une extension des shells de GNU et ne constitue pas une norme pour toutes les variantes d'UNIX). Nous pouvons maintenant exécuter le code et observer le résultat. Si nous voulons attribuer le résultat à une variable, nous utiliserons X=`factorial 20`.

Prenez note du fait qu'une autre notation donne le même effet que les guillemets inversés: $(command) qui est identique à `command`. Dans ce livre, nous utiliserons la notation classique "en guillemets".


next up previous contents Next: Flux et sed comme Up: Les scripts du shell. Previous: Notation avec guillements "doubles".   Table des matières  
1-01-2006