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: Flux et sed comme
Up: Les scripts du shell.
Previous: Notation avec guillements "doubles".
Table des matières
1-01-2006